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

三数字判断逻辑异常:输入全同数字为何同时输出30和40?

三数字判断逻辑错误导致重复输出问题解析

需求与问题

我需要实现一个三数字判断功能:

  • 三个数字完全相同 → 输出30
  • 仅有两个数字相同 → 输出40
  • 其余情况 → 输出20

但输入三个8时,程序同时输出了30和40,不符合预期。我的代码如下:

let readline = require("readline-sync");

let nb1 = parseInt(readline.question("Enter nb1 please : "));
let nb2 = parseInt(readline.question("Enter nb2 please : "));
let nb3 = parseInt(readline.question("Enter nb3 please : "));


if (nb1 == nb2 && nb2 == nb3) {
    console.log(30);
}

if (nb1 == nb2 || nb2 == nb3 || nb3 == nb1) {
    console.log(40);
}

else {
    console.log(20);
}

问题原因

代码使用了两个独立的if语句,而非互斥的条件分支:
当三个数字完全相同时,第一个if条件成立,输出30;此时第二个if的条件(任意两个数字相等)也必然成立,所以会继续执行输出40,导致两次输出。

修复方案

把第二个if改为else if,让三个条件形成互斥的分支结构,这样当第一个条件满足时,后续分支不会执行:

let readline = require("readline-sync");

let nb1 = parseInt(readline.question("Enter nb1 please : "));
let nb2 = parseInt(readline.question("Enter nb2 please : "));
let nb3 = parseInt(readline.question("Enter nb3 please : "));

if (nb1 == nb2 && nb2 == nb3) {
    console.log(30);
} else if (nb1 == nb2 || nb2 == nb3 || nb3 == nb1) {
    console.log(40);
} else {
    console.log(20);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:15:43