Ну, вы уверены, что всегда назначены значения, прежде чем ударить это утверждение?
Обновление: просто прочитайте свой код, поэтому, если выбор 2 или 3, переменная никогда не будет назначена. Но компилятор не может гарантировать, что пользователь нажмет 2 или 3, поэтому он предупреждает вас, что эта переменная «может» не была инициализирована. Фактически, в любое время существует условная ветвь, значение истинности которой зависит от значения переменной или функции, тогда компилятор будет ошибочно полагаться на безопасную сторону и решить, что он не может гарантировать, на какой стороне ветви это займет. Так, например:
boolean alwaysTrue = true;
int i;
if (alwaysTrue) {
i = 1;
}
System.out.println("i is " + i); // will generate error
if (true) {
i = 1;
}
System.out.println("i is " + i); // will not generate error
В заключение лучше инициализировать известное значение.
Да ему присваивается значение в зависимости от возвращаемого значения одной из функций. – thepinkanator95
Скопируйте и вставьте сегмент кода здесь. Пожалуйста, укажите, когда это объявлено, когда происходит печать. –