Простой ответ на ваш вопрос: переместите выражение System.out.println("Fibonacci #" + counter + " is: " + sum);
за пределы контекста while-loop
...
while (counter < n) {
sum = prevN + nextN;
prevN = nextN;
nextN = sum;
counter++;
}
System.out.println("Fibonacci #" + counter + " is: " + sum);
Я пробовал это, это дает мне следующее:Fibonacci2.java:62: ошибка: переменная сумма, возможно, не была инициализирована System.out.println ("Fibonacci #" + counter + "is:" + sum);^
В отличие от полей экземпляра, локальным переменным не назначается значение по умолчанию при их создании, поэтому необходимо убедиться, что значение имеет значение по умолчанию, если путь кода не может гарантировать, что он будетбыть установленным ...
int n,
counter = 2,
sum = 0,
prevN,
nextN;
Кроме того, ваши if
заявления вызывают озабоченность ...
if (n >= 2)
counter = 2;
prevN = 1;
nextN = 2;
if (n < 2)
System.out.println("Invalid Input. Please Try Again.");
По сути, это говорит о том, что ...
- если
n
больше или равно 2
, то counter
равно 2
prevN
равно 1
nextN
равно 2
- , если
n
меньше 2
, то печатать сообщение об ошибке - Продолжить цикл
Для меня это мало что значитсмысла и трудно читать.Вместо этого вы должны содержать код, который должен быть выполнен для каждой ветви в своем собственном контексте выполнения (т. Е. Между {...}
фигурными скобками), например ...
if (n >= 2) {
counter = 2;
prevN = 1;
nextN = 2;
while (counter < n) {
sum = prevN + nextN;
prevN = nextN;
nextN = sum;
counter++;
}
System.out.println("Fibonacci #" + counter + " is: " + sum);
} else {
System.out.println("Invalid Input. Please Try Again.");
}
, что облегчает чтение кодаи понять - но я просто настроен 10