[英]Why does my for loop return only half the elements I expect it to?
我想接收關於斐波那契數列的 n 個元素的用戶輸入。 掃描儀和計算本身似乎工作正常——輸入被成功抓取並計算出序列。 它甚至能夠正確取消負值輸入的資格。 但是,它實際上並沒有返回“n”個元素。 奇怪的是,我注意到循環始終返回所請求元素的一半,盡管順序正確。 如果 n = 20,則返回前 10 個數字。
這是代碼:
public class fibonacci_input {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner myObj = new Scanner(System.in);
int num1 = 0;
int num2 = 1;
int n;
System.out.println("How many elements would you like in your Fibonacci sequence?");
n = myObj.nextInt();
if (n < 0)
System.out.println("Positive numbers only!");
else
System.out.println("Your Fibonacci sequence with " + n + " elements is:");
{ for (int i = 1; i <= n; ++i)
{
System.out.print(num1 + " ");
int num3 = num1 + num2;
num1 = num2;
num2 = num3;
++i;
}
}
}
}
我正在努力想象問題可能是什么。 我首先認為這可能是測試條件語句的問題,但是在線類似(工作)解決方案似乎具有幾乎相同的循環格式。 我的變量聲明可能有問題嗎? 我嘗試了多次更改都無濟於事,所以會欣賞另一雙眼睛:)
您可以刪除第二個i++;
代碼中的語句,這個語句使 for 循環按預期運行一半,因為i
變量在每次迭代中遞增兩次
public class fibonacci_input {
public static void main(String[] args) {
Scanner myObj = new Scanner(System.in);
int num1 = 0;
int num2 = 1;
int n;
System.out.println("How many elements would you like in your Fibonacci sequence?");
n = myObj.nextInt();
if (n < 0)
System.out.println("Positive numbers only!");
else
System.out.println("Your Fibonacci sequence with " + n + " elements is:");
{ for (int i = 1; i <= n; ++i)
{
System.out.print(num1 + " ");
int num3 = num1 + num2;
num1 = num2;
num2 = num3;
//++i;
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.