Java: Как получить цикл while для вывода только последней строки - PullRequest
0 голосов
/ 03 октября 2018

Я только начинаю изучать Java, так что это застряло у меня на некоторое время.Это программа для вывода чисел последовательности Фибоначчи.Цель здесь - заставить программу выводить только последнюю строку цикла while.Я запустил и запустил программу, просто не мог понять, как вывести только последнюю строку последовательности

Пример ввода / вывода Ввод: 5

Вывод: Fibonacci #3 это: 3 Фибоначчи # 4 это: 5 Фибоначчи # 5 это: 8

Вывод должен выглядеть так: Фибоначчи # 5 это: 8

import javax.swing.JOptionPane;

public class Fibonacci2 {

    public static void main(String args[ ]) {

       int n, 
           counter = 2, 
           sum,    
           prevN, 
           nextN; 

       String inputValue;

       inputValue = JOptionPane.showInputDialog(null, "Enter Number Greater than 2: ",
                              JOptionPane.QUESTION_MESSAGE);
       n = Integer.parseInt(inputValue);

       if (n >= 2)

       counter = 2; 
       prevN = 1;
       nextN = 2;

       if (n < 2) 
       System.out.println("Invalid Input. Please Try Again.");


       while (counter < n)
       {
           sum = prevN + nextN;
           prevN = nextN;
           nextN = sum; 
           counter++;

           System.out.println("Fibonacci #"+counter+" is: " + sum); 

       }

       System.exit(0);

    } 

} 

Ответы [ 3 ]

0 голосов
/ 03 октября 2018

Единственное, что вам нужно сделать, это вывести за пределы цикла System.out.println ("Fibonacci #" + counter + "is:" + sum) таким образом, что он печатает только последнее число;Как это:

while (counter < n)
   {
   sum = prevN + nextN;
   prevN = nextN;
   nextN = sum; 
   counter++;
   }
System.out.println("Fibonacci #"+counter+" is: " + sum);
0 голосов
/ 03 октября 2018

Простой ответ на ваш вопрос: переместите выражение 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

0 голосов
/ 03 октября 2018

Просто поместите это вне цикла

while (counter < n){
sum = prevN + nextN;
prevN = nextN;
nextN = sum; 
counter++; 
}
System.out.println("Fibonacci #"+counter+" is: " + sum);
}
...