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

编写计算1+2+…+n的Java程序结果错误,请求技术排查

问题分析与修复方案

嘿,我帮你找出这段代码里的问题啦!你的核心问题是把累加器和循环计数器混在一起用了,导致逻辑完全偏离了“1到n求和”的需求,咱们一步步拆解:

原代码的核心错误

先看你这段循环逻辑:

while (addition <= n){
    addition += addition;
    addition ++;
}
  • 你用addition同时承担了两个角色:累加总和的变量、从1走到n的计数器,这就乱套了。
  • 第一次循环:addition初始是0,addition += addition会让它变成0(0+0),然后addition++变成1;
  • 第二次循环:addition += addition变成1+1=2,再加1变成3;
  • 后续循环的计算逻辑完全和“1到n累加”无关,最后得到的结果自然是错的。

修复方案:两种实现方式

方式1:用循环累加(清晰直观)

咱们把累加器和计数器分开,一个变量存总和,一个变量从1遍历到n:

import java.util.Scanner;
public class LukusarjanSumma {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        int sum = 0; // 专门存累加的总和
        System.out.println("Where to?");
        int n = Integer.valueOf(reader.nextLine());
        
        int i = 1; // 专门当计数器,从1走到n
        while (i <= n){
            sum += i; // 把当前计数器的值加到总和里
            i++; // 计数器自增
        }
        
        System.out.println("Total is " + sum);
    }
}

如果觉得while循环有点啰嗦,换成for循环会更简洁(逻辑完全一致):

// 把while循环替换成这段for循环即可
for (int i = 1; i <= n; i++) {
    sum += i;
}

方式2:用数学公式(更高效)

1到n的求和有现成的数学公式:总和 = n*(n+1)/2,不需要循环,直接计算就行,效率更高:

import java.util.Scanner;
public class LukusarjanSumma {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        System.out.println("Where to?");
        int n = Integer.valueOf(reader.nextLine());
        
        int sum = n * (n + 1) / 2; // 直接用公式计算
        
        System.out.println("Total is " + sum);
    }
}

验证一下

比如输入n=5,两种方式都会得到1+2+3+4+5=15,你可以试试哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 00:07:44