繁体   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