В дополнение к замечательному ответу другого Дейва, вы можете подавить предупреждение компилятора, инициализируя cSec
вне цикла.
byte cSec = 0;
boolean contCSec = true;
while(contCSec == true) {
System.out.println("Enter course section: ");
cSec = sc.nextByte();
if(cSec>0)
contCSec = false;
}
Причина, по которой вы получаете предупреждение без первого объявления, заключается в том, чтоКак ни странно, компилятор не анализирует содержимое вашего логического значения в while(contCSec == true)
.Он видит, что есть цикл while
, и видит, что будет логическое значение, полученное в результате (contCSec == true)
, но что касается компилятора, любое логическое значение, входящее в ваше условие while, может быть истинным или ложным,Это означает, что вы можете войти в цикл while, или вы могли бы ... нет.
Что касается компилятора, то все, что находится внутри цикла while, может происходить или не происходить, и нет никакого способазнать без фактического запуска кода.(Если вы хотите знать, почему на самом деле это строгое ограничение для компьютеров, проверьте проблему остановки .) Это означает, что компилятор понятия не имеет, произойдет ли cSec = sc.nextByte();
или нет.Отсюда и предупреждение.