在情况下无法获得正确的结果

时间:2019-03-25 15:47:32

标签: javascript

我无法得到正确的结果,在stdin,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函数中,如果条件第二,则似乎存在问题。当n设为18或20时,我无法获得正确的输出,该输出应为“怪异”

1 个答案:

答案 0 :(得分:0)

你不能同时做两个条件

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

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

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

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

这将解决您的问题。