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

Java程序逻辑错误排查:查找满足双整除条件的数字

问题排查与修复方案

咱们先拆解下你代码里的逻辑问题,这就是为啥只输出30、33的根源:

核心错误点

  • 错误的个位筛选条件:你写的if(i%10==z)里,z初始值是0,这就意味着只有个位为0的数字才会进入后续判断,像36、39的个位是6、9,根本触发不了这个条件,自然不会被输出。
  • 无效的判断语句:if(z%x==0);后面多了个分号,这会让这个判断变成空语句——不管条件成不成立,都不会执行任何后续逻辑,等于白写了。
  • 混乱的数字拆分逻辑:你只粗暴处理了十位和个位,没有循环检查每一位数字(要是遇到三位数、四位数就彻底失效了),而且拆分的顺序和判断逻辑完全乱套,没覆盖所有位的检查。
  • 遗漏了核心条件:你的代码里完全没加i%x == 0这个判断——也就是数字本身能被X整除的条件,虽然例子里X=3,30、33刚好满足,但逻辑上是缺失的。

修复后的完整代码

我们重新梳理逻辑:先判断数字本身是否能被X整除,再拆分它的每一位,确保每一位都能被X整除。

import java.util.Scanner;

public class ShipmentNumberChecker {
    public static void main(String args[]) {
        int m, n, x = 3;
        Scanner sc = new Scanner(System.in);
        
        System.out.println("Enter the range for shipment numbers :");
        m = sc.nextInt();
        n = sc.nextInt();
        
        System.out.println("Possible shipment numbers :");
        for (int i = m; i <= n; i++) {
            // 先快速过滤:数字本身不能被X整除的直接跳过
            if (i % x != 0) {
                continue;
            }
            
            // 拆分每一位数字,检查是否都能被X整除
            boolean allDigitsValid = true;
            int temp = i;
            while (temp > 0) {
                int digit = temp % 10;
                if (digit % x != 0) {
                    allDigitsValid = false;
                    break; // 有一位不满足,直接终止检查
                }
                temp = temp / 10; // 去掉已经检查过的个位
            }
            
            // 所有条件都满足才输出
            if (allDigitsValid) {
                System.out.println(i);
            }
        }
        sc.close();
    }
}

代码逻辑说明

  1. 前置过滤:先判断数字本身是否能被X整除,不满足的直接跳过,减少不必要的计算。
  2. 逐位检查:用临时变量temp存储当前数字,通过temp%10取出个位,temp/10去掉个位,循环直到temp变为0——不管是几位数都能完美处理。
  3. 状态标记:用allDigitsValid标记是否所有位都符合要求,只要有一位不满足就立刻终止检查,提升效率。
  4. 输出结果:只有当数字本身和所有位都满足条件时,才输出该数字。

测试你给出的30-40范围,这段代码会正确输出30、33、36、39。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:27:13