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

Java程序输出真因子时末尾多余逗号的修复问题求助

Java友好数程序修复方案

问题分析

  1. 输出格式问题:factorPairs2方法中,判断是否添加逗号的逻辑错误——用i != n / 2作为判断条件,但n/2不一定是当前数的真因子(比如25的n/2=12,而最后一个真因子是5),导致最后一个真因子后面会多余添加逗号。
  2. 逻辑错误:sumOfProperDivisors方法的循环条件i < num / 2会漏掉num/2这个真因子(比如28的14),导致真因子和计算错误,影响友好数的判断结果。

修复方案(不使用List集合)

方案一:修正真因子输出格式

核心思路是用标记变量记录是否已输出第一个真因子,后续因子前先加逗号,从根源避免末尾多余逗号:

public static void factorPairs2(int n) {
    System.out.print("The proper divisors of "+n+" are: {");
    boolean firstDivisorFound = false;
    for (int i = 1; i <= n / 2; i++) {
        if (n % i == 0) {
            if (firstDivisorFound) {
                // 非第一个因子,先输出逗号分隔
                System.out.print(", ");
            }
            System.out.print(i);
            firstDivisorFound = true;
        }
    }
    System.out.print("}.\n");
}

方案二:修正真因子和计算逻辑

原方法漏掉了num/2这个可能的真因子,需将循环条件改为i <= num / 2:

public static int sumOfProperDivisors(int num) {
    int sum = 0;
    // 修复循环条件,包含num/2这个真因子
    for (int i = 1; i <= num / 2; i++) {
        if (num % i == 0) {
            sum += i;
        }
    }
    return sum;
}

测试验证

  • 输入25时,真因子输出为{1, 5},无多余逗号
  • 输入28时,真因子输出为{1, 2, 4, 7, 14},真因子和计算正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 18:53:14