2小时我试图编译我的代码,似乎没有工作...... 看看哪一行给了我一个msg,在代码中有一个评论。
Try和catch是否隔离了变量的独家消息?
import java.io.*;
public class Tp3Partie2 {
public static void main (String[] params) {
int cmd;
FileReader fEntree;
FileReader fEntree2;
BufferedReader entree;
Cars [] tableau;
try {
fEntree = new FileReader( "test.txt" );
fEntree2 = new FileReader( "test.txt" );
LineNumberReader nbrLigne = new LineNumberReader( fEntree );
nbrLigne.skip(Long.MAX_VALUE);
int nbrLigneFichier = nbrLigne.getLineNumber();
nbrLigneFichier = nbrLigneFichier + 1;
entree = new BufferedReader( fEntree2 );
tableau = new Cars[nbrLigneFichier/5];
System.out.println( tableau.length );
for(int i=0;i<nbrLigneFichier/5;i++) {
String type = entree.readLine();
type.trim();
int posType = Cars.obtenirCode(type, 't');
String couleur = entree.readLine();
couleur.trim();
int posCouleur = Cars.obtenirCode(couleur, 'c');
int pointure = Integer.parseInt(entree.readLine());
double prix = Double.parseDouble(entree.readLine());
boolean neuf = Boolean.parseBoolean(entree.readLine());
System.out.println(i);
tableau[i] = new Cars(posType,posCouleur,pointure,prix,neuf);
tableau[i].toString();
}
entree.close();
nbrLigne.close();
} catch ( IOException e ) {
System.out.println( MessagesTp3.FICHIER_EXISTE_PAS );
}
do {
System.out.println( MessagesTp3.AJOUTER_PAIRE );
System.out.println( MessagesTp3.SUPPRIMER_PAIRE );
System.out.println( MessagesTp3.AFFICHER_PAIRES );
System.out.println( MessagesTp3.QUITTER );
System.out.println( MessagesTp3.VOTRE_CHOIX );
cmd = Clavier.lireInt();
switch (cmd) {
case 1:
break;
case 2:
break;
case 3:
System.out.println( MessagesTp3.LISTE_CHAUSSURES );
for(int i=0;i<tableau.length;i++) { // This line gives me a msg of "variable tableaumight not een initialized"
tableau[i].toString();
}
break;
case 9:
break;
default:
System.out.println( MessagesTp3.CHOIX_NONVALIDE );
break;
}
} while ( !(cmd == 9) );
System.out.println( MessagesTp3.FIN_PROGRAMME );
} // main
public static void enregistrerPaires () {
}
public static void ajouterPaires () {
}
public static void suprimerPaires () {
}
}
答案 0 :(得分:2)
实际上try和catch并没有限制范围,但编译器所说的是在初始化try catch块中的变量之前可能会抛出的异常。
在这种情况下抛出并捕获异常,该变量未初始化,然后代码将继续。但是进一步说,我们得到编译错误的行,其中变量不会被初始化。
编译器检测到这种可能性并抛出错误,例如,解决方案是使用空数组初始化变量:
Cars [] tableau = {};