如何用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
相关产品推荐
相关产品推荐

