首页 > 解决方案 > 在条件下无法得到正确的结果

问题描述

我无法在标准输入、18 和 20 上得到正确的结果,“奇怪”。一切对我来说看起来都不错,但一定有什么不对劲。

if (N % 2 == 1) {
    console.log("Weird");
}
else if ((N % 2 == 0) && (2 >= N <= 5)) {
    console.log("Not Weird");
}
else if ((N % 2 == 0) && (5 <= N <= 20)) {
    console.log("Weird");
}
else if ((N % 2 == 0) && (N > 20)) {
    console.log("Not Weird");
}
else {
    console.log("Weird");
}
'use strict';

process.stdin.resume();
process.stdin.setEncoding('utf-8');

let inputString = '';
let currentLine = 0;

process.stdin.on('data', inputStdin => {
    inputString += inputStdin;
});

process.stdin.on('end', _ => {
    inputString = inputString.replace(/\s*$/, '')
        .split('\n')
        .map(str => str.replace(/\s*$/, ''));

    main();
});

function readLine() {
    return inputString[currentLine++];
}



function main() {
    const N = parseInt(readLine(), 10);
    if (N%2==1) {
        console.log("Weird");
    }
    else if ((N % 2 == 0) && (2 >= N <= 5)) {
        console.log("Not Weird");
    }
    else if ((N % 2 == 0) && (5 <= N && N <= 20)) {
        console.log("Weird");
    }
    else if ((N % 2 == 0) && (N > 20)) {
        console.log("Not Weird");
    }
                    else{
                    console.log("Weird");
                }
            }




我已经添加了整个代码。在 main 函数中,在第二个 else if 条件中,似乎有问题。当 n 给出 18 或 20 时,我无法获得应该是“奇怪”的正确输出

标签: javascript

解决方案


你不能同时做两个条件

if (5<=N<=20) {}

将首先评估 5<=N ,这会产生真/假,与数字相比将分别评估为 (1/0)。然后将评估第二部分(<= 20)。

仅使用 AND / OR 运算符组合两个条件

if (5 <= N && N <= 20) {}

这将解决您的问题。


推荐阅读