提问人:Sam Hawthorne 提问时间:9/21/2022 更新时间:9/21/2022 访问量:127
为什么我的 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;
}
}
}
}
我很难想象问题可能是什么。我最初认为这可能是测试条件语句的问题,但在线类似的(工作)解决方案似乎它们的循环格式几乎相同。我的变量声明是否有问题?我已经尝试了多次更改都无济于事,因此将不胜感激另一双眼睛:)
答:
0赞
Robson Moreira
9/21/2022
#1
您可以删除代码中的第二个语句,该语句使 for 循环按预期运行一半,因为该变量在每次迭代中都会递增两次i++;
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;
}
}
}
}
评论
for (int i = 1; i <= n; ++i)
++i;
for
else
System.out.println