Java:如何获取while循环以仅输出最后一行

时间:2018-10-02 22:30:10

标签: java loops while-loop fibonacci

刚刚开始学习Java,所以这已经让我陷入了相当一段时间。这是一个输出斐波那契数列的程序。这里的目标是使程序仅输出while循环的最后一行。我已经启动并运行了程序,只是在尝试弄清楚如何仅输出序列的最后一行时遇到麻烦

示例输入/输出 输入:5

输出: 斐波那契#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);

    } 

} 

4 个答案:

答案 0 :(得分:2)

您问题的简单答案是将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 +“是:” +和); ^

与实例字段不同,局部变量在创建时不会分配默认值,因此,如果代码的路径不能保证将其设置,则需要确保该值具有默认值...

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.");
}

这使代码更易于阅读和理解-但我的想法很简单

答案 1 :(得分:1)

只需将其置于循环之外

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

答案 2 :(得分:1)

您唯一需要做的就是将System.out.println(“ Fibonacci#” + counter +“是:” + sum)移出循环,这样它只会打印最后一个数字; 像这样:

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

答案 3 :(得分:0)

我为我的 EGR 课程制作了一个类似的程序;它的目标是输出给定位置的数字(序列从 1 开始),即 p1=1、p2=1、p3=2、p4=3、p5=5、p6=8 等。

import java.util.Scanner;

public static void main(String[] args) {
Scanner keyboard=new Scanner(System.in);

System.out.println("Enter the Fibonacci Number's position.");
long n=keyboard.nextLong();
long sum, prevN=1, nextN=0, counter=1, last=0, lastnum;


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

}}

我知道现在 OP 已经晚了,但对于任何其他寻求帮助的学生/爱好者来说,这是我的两分钱。