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

Java判断三个输入数是否有两个偶数为何要用乘法,能否用加法替代

三个数判断至少存在两个偶数的逻辑说明

现有代码的运行原理

我们可以先把所有整数的奇偶性简化为1(奇数)、0(偶数),所有加减乘的模2结果只和奇偶性有关,和数值本身无关:

  • 第一个判断条件sumOfNumbers % 2 != 0:三个数的和为奇数时,等价于三个数里有奇数个奇数,也就是要么1个奇数、要么3个奇数。对应偶数的数量就是2个或者0个,刚好过滤掉偶数数量为1、3的场景,剩下需要区分的就是「3个全奇(0个偶数)」和「2个偶数1个奇数」两种场景。
  • 第二个判断条件firstNumber * secondNumber % 2 == 0:整数相乘结果为偶数的充要条件是至少有一个乘数是偶数,这个条件刚好用来区分上面剩下的两种场景:
    • 如果是3个全奇:前两个数都是奇数,乘积为奇数,模2结果为1,条件不成立,整体返回false,符合预期
    • 如果是2个偶数1个奇数:最多只有1个奇数,前两个数里至少有一个偶数,乘积为偶数,模2结果为0,条件成立,整体返回true,符合预期

注意:现有代码存在逻辑缺陷,三个数全为偶数时,和为偶数,第一个条件不成立,会返回false,不符合「至少两个偶数」的需求。如果需要覆盖全偶场景,可以直接用更直观的逻辑:统计奇数的个数,只要奇数个数≤1,就说明偶数个数≥2:

boolean if2NumbersEven = (firstNumber%2 + secondNumber%2 + thirdNumber%2) <= 1;

能不能用加法代替乘法

完全可以,不存在只能用乘法的限制。这里乘法的作用只是判断「前两个数不全为奇数」,只要用加法写出等价的判断逻辑即可,参考写法如下:

// 等价于乘法写法的判断逻辑:两个数的奇偶性相加不等于2,就说明不会两个都是奇数
(firstNumber % 2 + secondNumber % 2) != 2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:18:01