簡體   English   中英

為什么我的 for 循環只返回我期望的一半元素?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM