我在编译这段代码时遇到了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;
}
Run Code Online (Sandbox Code Playgroud)
Javac在线上给出了return year;"变量'年'可能尚未初始化' 的错误".但由于它在一个while循环中,我确信它已经被初始化了.我向TA询问了这个问题,他无法回答我为什么会这样.他最好的猜测是,Javac并不是一个非常好的编译器,可以解决这种问题.
基本上,为什么会发生这种错误?我知道我可以通过在进入while循环之前初始化年来修复它,但我想知道是否有另一种方法来实现我想要实现的目标.