Я начинаю изучать Java, в этом примере, которые пытаются имитировать игру с кубиками.Локальная инициализация переменных и выбор переключателя
Ошибка компилятора появляется, когда я не инициализирую переменную myPoint
, поэтому я установил ее в ноль перед конструкцией switch
.
Я хочу понять, почему мне нужно инициализировать переменную myPoint
, когда это значение равно значению sumOfDice
в переключателе после того, как объявлено, В отличии отgameStatus
переменного?
/***** roll dice game ****/
//some code here..
private enum Status { CONTINUE, WON, LOST };
// plays one game of craps
public static void main(String[] args)
{
// point if no win or loss on first roll
int myPoint = 0;
Status gameStatus; // can contain CONTINUE, WON or LOST
int sumOfDice = rollDice(); // first roll of the dice
// determine game status and point based on first roll
switch (sumOfDice)
{
case SEVEN: // win with 7 on first roll
case YO_LEVEN: // win with 11 on first roll
gameStatus = Status.WON;
break;
case SNAKE_EYES: // lose with 2 on first roll
case TREY: // lose with 3 on first roll
case BOX_CARS: // lose with 12 on first roll
gameStatus = Status.LOST;
break;
default: // did not win or lose, so remember point
gameStatus = Status.CONTINUE; // game is not over
myPoint = sumOfDice; // remember the point
System.out.printf("Point is %d\n", myPoint);
break; // optional at end of switch
} // end switch
// rest of the code here ..
// display won or lost message
// roll dice, calculate sum and display results
public static int rollDice()
{
// return sum of dice
}
} // end class Craps
http://stackoverflow.com/questions/1560685/why-must- local-variables-including-primitives-always-be-initialized-in-java –
Код, который вы предоставили, не сработает, если myPoint не инициализирован. Вероятно, вы используете переменную myPoint где-то вне блока 'default', где она может быть неинициализирована. – pkalinow