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

Java求和循环终止问题求助:达3000时停止并输出终止计数器值

解决Java累加求和到指定值停止的问题

嘿,别担心,作为Java初学者遇到这种问题太正常啦!我来帮你分析一下问题所在,然后给出修正方案。

原代码的问题

你的思路是对的,但有一个关键的逻辑漏洞:你判断的是sum == 3000才停止循环,但连续整数的累加和可能永远不会刚好等于3000。我们可以算一下:
1到n的和公式是n*(n+1)/2,解方程n*(n+1)/2 = 3000,得到n≈76.96,也就是说:

  • 加到76时,总和是76*77/2 = 2926
  • 加到77时,总和变成2926+77=3003

可见总和直接从2926跳到了3003,完全跳过了3000,所以你的sum == 3000条件永远不会触发,循环会一直跑到999(因为原循环是i<1000),最后输出的是1到999的总和,根本不会提前停止。

另外原循环的i <1000可以改成i <=1000,这样才能包含1000这个数,不过这不是核心问题。

修正后的代码

只需要把判断条件改成sum >= 3000,就能在总和达到或超过3000时立刻停止循环,同时输出当时的i值:

public class JavaApplication2018 { 
    public static void main(String[] args) { 
        int sum = 0; 
        // 改成i <=1000,确保能遍历到1000
        for (int i = 1; i <= 1000; i++) { 
            sum += i; // 简化写法,等价于sum = sum + i
            if (sum >= 3000) { 
                System.out.println("循环终止时的计数器值:" + i);
                break;
            }
        }
        System.out.println("最终总和:" + sum);
    } 
}

运行结果

这段代码运行后会输出:

循环终止时的计数器值:77
最终总和:3003

这完全符合你的需求:当总和达到3000(这里是超过,因为刚好等于的情况不存在)时停止,输出最后一个被累加的i值77。

如果想要更严谨,也可以先判断加上当前i后是否会超过3000,再决定是否累加,写法如下:

public class JavaApplication2018 { 
    public static void main(String[] args) { 
        int sum = 0; 
        for (int i = 1; i <= 1000; i++) { 
            if (sum + i >= 3000) {
                sum += i;
                System.out.println("循环终止时的计数器值:" + i);
                break;
            }
            sum += i;
        }
        System.out.println("最终总和:" + sum);
    } 
}

这个写法和之前的结果是一样的,只是逻辑顺序不同,看你更喜欢哪种风格。

慢慢来,Java学习就是这样一步步踩坑、一步步解决问题过来的,继续加油哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:28:12