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

如何将Java代码中的9层嵌套if语句合并为单个判断?

嘿,你的代码能正常运行但嵌套确实有点冗余,我给你几个精简的思路,一步步来优化:

方法1:合并嵌套条件为单个if语句

最直接的改进就是把多层嵌套的if合并成一个,用逻辑与&&连接所有条件,这样逻辑完全和原代码一致,但可读性提升很多:

public static void main(String[] args) {
    for (int i = 100; i < 10000; i++) {
        if (i % 2 == 0 && i % 3 == 0 && i % 4 == 0 && i % 5 == 0 
            && i % 6 == 0 && i % 7 == 0 && i % 8 == 0 && i % 9 == 0) {
            System.out.println(i);
            break;
        }
    }
}
方法2:简化检查的除数(利用倍数关系)

仔细看一下个位数的整除条件,其实很多数是其他数的倍数,我们可以去掉重复的检查:

  • 能被8整除的数,必然能被2和4整除
  • 能被9整除的数,必然能被3整除
  • 同时满足8和9的数,已经包含了2和3的因子,所以也能被6整除

所以实际上只需要检查5、7、8、9这四个数就够了,代码会更简洁,运行效率也更高:

public static void main(String[] args) {
    for (int i = 100; i < 10000; i++) {
        if (i % 5 == 0 && i % 7 == 0 && i % 8 == 0 && i % 9 == 0) {
            System.out.println(i);
            break;
        }
    }
}
方法3:直接计算最小公倍数(最优雅的解法)

这个问题本质上是求1-9的最小公倍数(LCM),我们可以用数学方法直接计算,不用遍历数字,这是最高效的解法:

首先需要先实现求最大公约数(GCD)的函数,然后通过GCD计算两个数的LCM,再依次和剩下的数计算最终的LCM:

// 计算两个数的最大公约数(GCD)
public static int gcd(int a, int b) {
    while (b != 0) {
        int temp = b;
        b = a % b;
        a = temp;
    }
    return a;
}

// 通过GCD计算两个数的最小公倍数(LCM)
public static int lcm(int a, int b) {
    return (a * b) / gcd(a, b);
}

public static void main(String[] args) {
    int result = 1;
    // 计算1到9的最小公倍数
    for (int num = 2; num <= 9; num++) {
        result = lcm(result, num);
    }
    System.out.println(result); // 输出2520
}

这种方法不仅精简,还能轻松扩展到更大的数字范围,而不用调整循环条件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:52:40