javascript - 在条件下无法得到正确的结果
问题描述
我无法在标准输入、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 时,我无法获得应该是“奇怪”的正确输出
解决方案
你不能同时做两个条件
if (5<=N<=20) {}
将首先评估 5<=N ,这会产生真/假,与数字相比将分别评估为 (1/0)。然后将评估第二部分(<= 20)。
仅使用 AND / OR 运算符组合两个条件
if (5 <= N && N <= 20) {}
这将解决您的问题。
推荐阅读
- azure-devops - 如何将发布工件部署到不同子网中的机器位置
- python - 统计列中连续True的个数,False时重新开始
- kubernetes - 选择节点以使用 Kubernetes 执行 Nextflow 工作流
- apache-spark - 用于处理不同来源的增量数据加载的 AWS Glue
- javascript - jquery如何在数据表的每一行中添加批准和拒绝按钮?
- javascript - 剧作家超时
- python - 如何使用通配符删除列中的所有字符串?
- facebook - 带有自定义重定向 URL 的 Facebook 登录手动流程
- typescript - 如何声明一个模块以导出任何东西,无论它究竟导出什么?
- scala - 在 Scala 中合并两个 Future[Map[T1, T2]] 的最佳方法是什么