刚刚开始学习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);
}
}
答案 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 已经晚了,但对于任何其他寻求帮助的学生/爱好者来说,这是我的两分钱。