【问题标题】:What is wrong with my operators? Javascript我的运营商出了什么问题? Javascript
【发布时间】:2018-07-07 04:55:12
【问题描述】:
我不知道为什么它不起作用。假设当你得到一个等于或大于 90 的分数时等于 A。当你得到等于 B 的 80 到 89 之间的分数时......
let nota = prompt("Ingrese su nota: ");
if (nota >= 90){
console.log(nota + " " + "equivale a una A");
}
else if (nota == 80 || nota <= 89){
console.log(nota + " " + "equivale a una B");
}
else if (nota == 70 || nota <= 79){
console.log(nota + " " + "equivale a una C");
}
else if (nota == 60 || nota <= 69){
console.log(nota + " " + "equivale a una D");
}
else{
console.log("Tienes una F");
}
【问题讨论】:
标签:
javascript
logic
logical-operators
【解决方案1】:
你的问题是在第二个测试中:
nota == 80 || nota <= 89
每个小于等于 89 的值都会通过,因此它们都会得到 B。还要注意,测试 nota == 80 是多余的,因为 80 也是
nota <= 89
当然可以:
nota >= 80 && nota <= 89
但这比它需要的更复杂。您可以简化测试,因为 if else 意味着一旦一个测试为真,它将停止测试,所以只需使用 >= 和所有测试的较低值:
let nota = prompt("Ingrese su nota: ");
if (nota >= 90){
console.log(nota + " " + "equivale a una A");
} else if (nota >= 80) {
console.log(nota + " " + "equivale a una B");
} else if (nota >= 70) {
console.log(nota + " " + "equivale a una C");
} else if (nota >= 60) {
console.log(nota + " " + "equivale a una D");
} else {
console.log("Tienes una F");
}
测试必须按正确的顺序进行,因此如果值为 90 或更大,则满足第一个测试并且不测试其他测试。如果该值为 82,则第一个测试失败,因此进入下一个测试,下一个测试通过,结果为 B,并且不再尝试进一步的测试。
对于其他值以此类推,所以如果值为 55,则所有测试都失败并进入最后的 else。
【解决方案2】:
将表达式替换为nota >= 80 && nota <= 89等
【解决方案3】:
使用此代码
let nota = prompt("Ingrese su nota: ");
if (nota >= 90){
console.log(nota + " " + "equivale a una A");
}
else if (nota <= 89 && nota >= 80 ){
console.log(nota + " " + "equivale a una B");
}
else if (nota <= 79 && nota >= 70){
console.log(nota + " " + "equivale a una C");
}
else if (nota <= 69 && nota >= 60){
console.log(nota + " " + "equivale a una D");
}
else{
console.log("Tienes una F");
}