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

查找指定数值以下所有2的幂并计算其总和的Java实现问题

解决Java输出2的幂时的末尾加号和总和计算问题

嘿,作为Java新手遇到这种小问题太正常了,我来帮你一步步搞定!

先搞定总和计算错误的问题

你现在得到-2显然是累加逻辑出了问题。正确的思路很简单:初始化一个总和变量sum为0,每找到一个符合条件的2的幂,就把它加到sum里。比如n=50时,我们要累加2、4、8、16、32,总和自然就是62。

再去掉末尾多余的加号

你尝试用StringBuilder删最后两个字符没成功,大概率是因为拼接时的字符数没算对(比如" + "其实是三个字符),而且这种“事后补救”的方式也不够优雅。推荐两种更可靠的方法:

方法1:用集合收集元素再拼接

先把所有2的幂转换成字符串存到集合里,再用String.join(" + ", 集合)自动完成分隔,完全不会出现末尾的加号:

import java.util.Scanner;
import java.util.ArrayList;
import java.util.List;

public class PowerOfTwoDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入n的值:");
        int n = scanner.nextInt();
        
        List<String> powerList = new ArrayList<>();
        int sum = 0;
        int current = 2; // 第一个2的幂是2^1
        
        while (current < n) {
            powerList.add(String.valueOf(current));
            sum += current;
            current *= 2; // 计算下一个2的幂
        }
        
        // 用" + "连接所有元素
        String output = String.join(" + ", powerList);
        System.out.println(output + " = " + sum);
    }
}

方法2:用StringBuilder时判断是否为第一个元素

在拼接前先判断是不是第一个数,第一个数直接加,后面的数先加" + "再加数字,从根源避免末尾加号:

import java.util.Scanner;

public class PowerOfTwoDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入n的值:");
        int n = scanner.nextInt();
        
        StringBuilder sb = new StringBuilder();
        int sum = 0;
        int current = 2;
        boolean isFirst = true;
        
        while (current < n) {
            if (!isFirst) {
                sb.append(" + ");
            }
            sb.append(current);
            sum += current;
            current *= 2;
            isFirst = false;
        }
        
        System.out.println(sb.toString() + " = " + sum);
    }
}

运行这两段代码,当n=50时,都会输出2 + 4 + 8 + 16 + 32 = 62,完美解决你的两个问题!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:28:21