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

Java程序无法输出符合条件的四位数,求技术排查协助

排查Java四位数筛选程序问题

嘿,我来帮你搞定这个问题!先确认下你要找的9837确实完全符合所有条件:四个数字互不重复、千位9是十位3的3倍、个位7是奇数、数字和9+8+3+7=27,完全正确。你的程序没输出结果,大概率是逻辑判断或者数位拆分出了问题,我来帮你梳理下常见坑和修正方案:

可能的问题点

  • 循环范围错误:你有没有确保循环覆盖了所有四位数(1000到9999)?如果循环起始或结束值不对,可能直接跳过了目标数。
  • 数位拆分错误:拆分千位、百位、十位、个位时很容易算错,比如十位应该是(num / 10) % 10,写错的话会导致后续判断全部失效。
  • 四数字互不相同的判断遗漏:要确保所有两两数位都不相等,比如不能只判断千位≠百位、千位≠十位,还得检查百位≠十位、百位≠个位、十位≠个位,漏一个都可能筛掉正确结果。
  • 千位与十位的关系搞反:条件应该是千位数字 == 十位数字 *3,要是写成十位数字 == 千位数字 *3,那完全找不到符合的数了。
  • 条件组合用错运算符:必须用&&(逻辑与)把所有条件连起来,要是用了||(逻辑或),会输出一堆不符合的数,或者因为逻辑不对漏掉目标。

修正后的完整代码

我把正确的逻辑写成了完整程序,你可以参考对比自己的代码:

public class Batman {
    public static void main(String[] args) {
        // 遍历所有四位数
        for (int num = 1000; num <= 9999; num++) {
            // 正确拆分各个数位
            int thousand = num / 1000;
            int hundred = (num / 100) % 10;
            int tens = (num / 10) % 10;
            int unit = num % 10;
            
            // 逐一验证所有条件
            boolean isFourDifferent = (thousand != hundred) && (thousand != tens) && (thousand != unit)
                    && (hundred != tens) && (hundred != unit) && (tens != unit);
            boolean isThousand3TimesTens = thousand == tens * 3;
            boolean isOdd = unit % 2 != 0;
            boolean isSum27 = (thousand + hundred + tens + unit) == 27;
            
            // 所有条件满足时输出结果
            if (isFourDifferent && isThousand3TimesTens && isOdd && isSum27) {
                System.out.println("符合条件的数:" + num);
            }
        }
    }
}

代码关键点说明

  1. 循环严格覆盖1000到9999的所有四位数,不会漏掉任何可能的数。
  2. 数位拆分的方式简单直接,避免计算错误。
  3. 四数字不同的判断覆盖了所有两两组合,确保没有重复数字。
  4. 所有条件用&&连接,只有当全部满足时才会输出结果。

你可以把自己的代码和这个版本对比,看看是哪一步出了问题,应该就能解决啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:21:41