繁体   English   中英

Java:无法理解 for 循环行为

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM