Java:无法理解 for 循环行为

Gem*_*hna 1 java iteration loops for-loop

我对编码有点陌生,我正在解决一个问题,该问题应该打印变量 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 + " ");
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

输入: L=4 ,R=8

输出:4 5 6 7 8 4 5 6 7 8 4 5 6 7 8等等...

Era*_*ran 5

你把条件放错了地方,所以你的循环是无限的。

进一步解释一下,由于您的循环没有退出条件,i将永远递增,但到达 后Integer.MAX_VALUE,下一个i++将溢出,因此i将变为负数 ( Integer.MIN_VALUE)。然后它将继续增加,直到它再次达到您希望打印的范围,因此该范围将一次又一次地打印,永远。

正确的循环应该是:

for(int i = L; i <= R; i++) {
    System.out.print(i+" ");
}
Run Code Online (Sandbox Code Playgroud)

现在i将从您希望打印的第一个值 ( L) 开始,并在打印您希望打印的最后一个值 ( R)后终止循环。