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

如何用for循环按指定格式打印整数的因数(含代码优化需求)

解决你的Java因数求和格式输出问题

别担心,我懂这种卡壳的压力!咱们一步步来调整你的代码,实现你想要的「sum = 因数 + 因数... = sum > num」格式输出。

先看修改后的完整代码

import java.util.*;
public class Abundant {
    public static void main(String [] args) {
        Scanner input = new Scanner(System.in);
        int num = 0;
        int sum = 0;
        // 用来高效拼接因数字符串的工具,比直接用String拼接更省资源
        StringBuilder factorExpression = new StringBuilder();

        System.out.println("Enter an integer:");
        num = input.nextInt();
        System.out.println("The factors of " + num + " are:");

        for (int i = 1; i < num; i++) {
            if (num % i == 0) {
                System.out.println(i);
                sum += i;
                // 处理第一个因数,避免开头出现多余的加号
                if (factorExpression.length() == 0) {
                    factorExpression.append(i);
                } else {
                    factorExpression.append(" + ").append(i);
                }
            }
        }

        // 判断sum和num的大小关系,生成对应的比较符号
        String comparisonSymbol = sum > num ? ">" : sum < num ? "<" : "==";
        // 按照要求的格式输出最终结果
        System.out.println("sum = " + factorExpression + " = " + sum + " " + comparisonSymbol + " " + num);
    }
}

关键调整点说明

  • 用StringBuilder拼接因数:如果直接用String拼接,每次都会生成新的字符串对象,效率很低。StringBuilder是Java专门用来高效拼接字符串的工具,适合这种循环拼接场景;
  • 处理开头的加号问题:第一个因数前面不能有多余的加号,所以通过判断factorExpression是否为空来决定是直接加数字,还是加「+ 数字」;
  • 格式化输出最终结果:先判断sum和num的大小关系,得到对应的符号(>、<或==),再把所有内容按你要的格式拼接输出。

比如输入12的话,输出会是:

Enter an integer:
12
The factors of 12 are:
1
2
3
4
6
sum = 1 + 2 + 3 + 4 + 6 = 16 > 12

这样就完全符合你的需求啦,慢慢来,代码调试都是这样一步步打磨的😉

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:37:41