java - 如何跳过java中while循环的最后一次迭代?

标签 java loops while-loop

这是我的代码:

System.out.println("Enter upper limit of range");
long u = in.nextLong(), x = 0, y = 1, z = x+y;
System.out.println("Fibonacci Series till " + u + " -");
System.out.print(x + " " + y + " " + z + " ");
while (z < u) {
    x = y;
    y = z;
    z = x + y;
    System.out.print(z + " ");
}

我想跳过最后一次迭代,以便最后一次输出的数量不会超出限制。

例如,如果我将u的值初始化为25,那么它也会打印超出限制的34。跳过最后一次迭代将不会显示数字 34

最佳答案

只需在将 z 增加到斐波那契数列中的下一个数字之前打印:

while (z < u) {
    System.out.print(z+" ");
    x = y;
    y = z;
    z = x + y;
}

通过此更改,最终迭代仍然会导致 z 被提前到一个太高的值,并且会在下一次迭代中失败,但您不会打印这个数字。

此重构还解决了您遇到的另一个问题,即不打印斐波那契数列中的第一个数字。通过将打印语句放在数字前进之后,z 的初始值将永远没有机会被打印。

关于java - 如何跳过java中while循环的最后一次迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47988382/

相关文章:

java - 为 Spring Batch 应用程序中的所有作业保持相同的 block 大小

java - 如何使用java在后台记录击键?

java - Eclipse:使用系统资源

javascript - 如何防止 Action 创建器中的 while 循环出现无限循环?

java - 我想将我从 imageView 裁剪的照片存储到我的私有(private)文件夹中

c - 如何在 C 中遍历整数的数字?

python - 您可以在不实例化变量的情况下在 Python 中创建变量列表吗?

javascript - 从数组javascript中删除值

java - 我可以给 boolean 基元一个条件作为初始化吗?

C++ 用户输入关闭程序调试