[英]Java: How to get while loop to only output last line
剛剛開始學習Java,所以這讓我卡住了很長一段時間。 這是一個輸出斐波那契數列數字的程序。 這里的目標是讓程序只輸出 while 循環的最后一行。 我已經啟動並運行了程序,只是在試圖弄清楚如何只輸出序列的最后一行時遇到了麻煩
示例輸入/輸出輸入:5
輸出:Fibonacci #3 是:3 Fibonacci #4 是:5 Fibonacci #5 是:8
輸出應如下所示:Fibonacci #5 is: 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);
}
}
你的問題的簡單答案是,移動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: 錯誤:變量 sum 可能沒有被初始化 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.");
}
這使代碼更易於閱讀和理解 - 但我頭腦簡單😉
把它放在循環外
while (counter < n){
sum = prevN + nextN;
prevN = nextN;
nextN = sum;
counter++;
}
System.out.println("Fibonacci #"+counter+" is: " + sum);
}
您唯一需要做的就是將 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);
我為我的 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 已經晚了,但對於任何其他尋求幫助的學生/愛好者來說,這是我的兩分錢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.