我有上編譯這段代碼用javac麻煩:「變量可能尚未初始化」即使我確定它是
public static int getYear() {
Console input = System.console();
Boolean gotYear = false;
int year;
String userInput = input.readLine();
while (!gotYear) {
try {
year = Integer.parseInt(userInput);
gotYear = true;
} catch (Exception e) {
System.out.print("Please insert a valid date. ");
userInput = input.readLine();
}
}
return year;
}
javac的給我上線return year;
的錯誤「變量「年「可能尚未初始化」。但是因爲它是在一個while循環中的,所以我知道它會被初始化。我問我的T.A.對此,他無法回答我爲什麼會發生這種情況。他最好的猜測是Javac並不是一個很好的編譯器,可以用來計算這種東西。
基本上,這個錯誤爲什麼會發生?我知道我可以通過在進入while循環之前初始化一年來解決它,但我想知道是否有另一種方法來實現我想要實現的目標。
只是初始化一年'-1' – EpicPandaForce 2014-09-03 14:18:44
有了,你現在有,在「年份」變量尚未初始化,可能無法初始化代碼。如果你的while循環不執行會怎麼樣?只需使用默認值,如-1。 – Marko 2014-09-03 14:21:06
不要爲程序流使用catch塊。 – Stefan 2014-09-03 14:21:18