Variable bloc try catch java

Fermé
roseda - 24 févr. 2012 à 11:26
 roseda - 24 févr. 2012 à 18:34
Bonjour,
si vous pouviez m'aider:
j'ai un petit problème:

le code suivant , lit un fichier texte d'entiers , et les affiche dans une matrice,
je voulais sauvegarder les valeurs de la matrice dans un tableau de 2 dimensions; puis réutiliser ce tableau. mais quand je déclare la table dans le bloc try , je ne peux pas la réutiliser, sinon si je fais comme décrit dans mon code , j'aurai cette erreur après compilation:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
monTableau cannot be resolved or is not a field

at fich.<init>(fich.java:31)
at afich.main(afich.java:12)

svppppp, quelqu'un peut m'aider??? merciiiiiiiii


mon code java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;


public class fich {
String chemin = "fichier.txt";
public int a;


public int i=1;
public int x=1;
public int j=1;
int [][] monTableau = new int[a][a];

{
try{
BufferedReader buf = new BufferedReader(new FileReader(chemin));

try {

String line;
// on lit toutes les lignes du fichier
int n = Integer.parseInt(buf.readLine());
a=n+1;
while ((line = buf.readLine()) != null) {
if (x<=n) {

int m=Integer.parseInt(line);
this.monTableau[i][j]=m;
System.out.print(monTableau[i][j]+ " ");
x++;
j++;
}
if (x==n+1)
{
System.out.println();
x=1;
i++;
j=1;
}
}

System.out.println("\n");
}

finally {


// on ferme notre fichier
buf.close();
}

}
catch (IOException ioe) {

System.out.println(ioe.toString());
}
}
}



A voir également:

2 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
24 févr. 2012 à 16:52
C'est assez simple, au lieu de faire :

try {
    BufferedReader buf = new BufferedReader(...);
    ...

Il faut faire :

BufferedReader buf = null;
try {
    buf = new BufferedReader(...);
    ...

Remarque : si tu ne connais pas la classe Scanner, jettes-y un coup d'oeil, c'est plus simple pour lire les lignes d'un fichier que l'utilisation de BufferedReader...

Scanner sc = new Scanner(new File("chemin"));

while (sc.hasNextLine()) {
    ligne = sc.nextLine();
    ...
0
Utilisateur anonyme
24 févr. 2012 à 18:04
Salut,
C'est quoi le bloc {
....
...
}
qui suit
int [][] monTableau = new int[a][a];

un constructeur,
la méthode main(...),
???
d'autre part le tableau monTableau tel que déclaré n'est pas utilisable car sans dimensions ou plustôt avec des dimensions zéro:

avec public int a; a est à zéro
et donc on a int [][] monTableau = new int[0][0];

Dan
0
c bon j'ai résolu mon problème, j'ai déclaré le tableau avant le bloc try, et je l'ai réinitialisé avec des constantes, et ça marche. vous aviez raison , merci bcp pour la réponse.
0