You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java for循环行为异常求助:输出L到R整数时重复打印

解决你的无限循环输出问题

嘿,我一眼就瞅到问题出在哪啦!你的for循环没设置终止条件,导致它会一直跑下去,甚至因为int类型的溢出问题反复回到4-8的区间,所以才会重复输出那串数字。

问题根源

你写的循环是这样的:

for (int i = 0; ; i++) {
    if (i >= L && i <= R) {
        System.out.print(i + " ");
    }
}

这里for循环的中间判断部分是空的,意味着这个循环永远不会停止。当i递增到int类型的最大值(2147483647)后,再加1就会溢出变成负数,然后继续递增,直到又回到4-8的范围,于是就开始重复输出了。

修正方案

其实完全不用这么绕,直接让循环从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();
        // 从L遍历到R,循环会在i超过R时自动终止
        for (int i = L; i <= R; i++) {
            System.out.print(i + " ");
        }
    }
}

如果非要保留从i=0开始的逻辑(虽然没必要),那也得给循环加个终止条件,比如让i不超过R:

for (int i = 0; i <= R; i++) {
    if (i >= L && i <= R) {
        System.out.print(i + " ");
    }
}

这样i到R就会停止循环,不会继续递增导致溢出重复了。

测试效果

输入4和8后,修正后的代码只会输出一次:4 5 6 7 8,完美符合预期~

内容的提问来源于stack exchange,提问作者Gemini Krishna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:04:26