У меня возникли проблемы с 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. об этом, и он не смог ответить мне, почему это происходит. Его лучшая догадка заключается в том, что Javac - не очень хороший компилятор для того, чтобы разобраться в этом.
В принципе, почему эта ошибка происходит? Я знаю, что могу исправить это, инициализируя год, прежде чем я войду в цикл while, но я хотел знать, есть ли другой способ достичь того, чего я пытаюсь достичь.
только инициализировать год до '-1' – EpicPandaForce
С кодом, который у вас есть, переменная 'year' еще не инициализирована и может не инициализироваться. Что делать, если цикл while не будет выполняться? Просто используйте значение по умолчанию, например -1. – Marko
Не используйте блок catch для потока программы. – Stefan