![](/img/trans.png)
[英]Unable to understand the behaviour of thread synchronization in following java code
[英]Java: Unable to understand for loop behaviour
我对编码有点陌生,我正在解决一个问题,该问题应该打印变量 L 和 R 之间的所有整数,包括 L,R。 但我反复获得所需的输出。 我不明白这样做的原因。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int L = sc.nextInt();
int R = sc.nextInt();
for (int i = 0; ; i++) {
if (i >= L && i <= R) {
System.out.print(i + " ");
}
}
}
输入: L=4 ,R=8
输出: 4 5 6 7 8 4 5 6 7 8 4 5 6 7 8
等等...
你把条件放错了地方,所以你的循环是无限的。
进一步解释一下,由于您的循环没有退出条件,因此i
将永远递增,但在达到Integer.MAX_VALUE
,下一个i++
将溢出,因此i
将变为负数( Integer.MIN_VALUE
)。 然后它将继续增加,直到它再次达到您希望打印的范围,因此该范围将一次又一次地打印,永远。
正确的循环应该是:
for(int i = L; i <= R; i++) {
System.out.print(i+" ");
}
现在i
将从您希望打印的第一个值 ( L
) 开始,并且在打印您希望打印的最后一个值 ( R
) 后循环将终止。
如果不熟悉编码,请点击此链接以了解 for 循环的工作原理
并且您没有定义 for 循环应该停止执行代码块的任何条件
for(int i = L; i <= R; i++) {
System.out.print(i+" ");
}
这就是你的 for 循环应该如何
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.