2014-10-26 9 views

ответ

2

Ошибка говорит, что в зависимости от значения choice значение fAnswer может не получиться инициализированным. Например, если у вас есть choice == 4, fAnswer не будет иметь назначенное ему значение ДО того, как вы вызываете out.println("The answer is: " + fAnswer). Это означает, что fAnswer укажет на хлам, и это может быть не то, что вы хотите.

Try и определить его в момент декларации

double fAnswer = -1.0; // Or something like this. 
0

Ну, вы уверены, что всегда назначены значения, прежде чем ударить это утверждение?

Обновление: просто прочитайте свой код, поэтому, если выбор 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 

В заключение лучше инициализировать известное значение.

+0

Да ему присваивается значение в зависимости от возвращаемого значения одной из функций. – thepinkanator95

+0

Скопируйте и вставьте сегмент кода здесь. Пожалуйста, укажите, когда это объявлено, когда происходит печать. –

0

Компилятор не достаточно умен, чтобы знать наверняка, что переменная была назначена через все возможные пути кода до его использования на данной линии. Чтобы успокоить компилятор, просто присвойте переменной значение, когда вы ее объявите:

double fAnswer = 0.0; 
Смежные вопросы