我无法得到正确的结果,在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时,我无法获得正确的输出,该输出应为“怪异”
答案 0 :(得分:0)
你不能同时做两个条件
if (5<=N<=20) {}
将首先评估5 <= N,这将产生true / false,与数字比较时,将分别评估为(1/0)。然后评估第二部分(<= 20)。
仅使用AND / OR运算符组合两个条件
if (5 <= N && N <= 20) {}
这将解决您的问题。