我试图创建一个只接受一些值的程序。所以,如果" e"变量不是1或2或3,表示数字不正确,但如果该值等于这些数字,则运行else部分。
所有这些听起来都非常简单,易于实现,而且它是,但是我运行了代码和每个vaule我设置为" e"运行if部分。
这是代码:
var e;
e=parseFloat(prompt("Input e",""));
if(e!=1 || e!=2 || e!=3)
{
alert("put again E");
}
else
{
//whatever
}
答案 0 :(得分:8)
在英语中,你说“不是1或2或3”,但是写成!(e == 1 || e == 2 || e == 3)
;或者,您可以使用逻辑等效的“不是1,而不是2,而不是3”,表示为e != 1 && e != 2 && e != 3
。
你写的是“不是1或不是2或不是3”。如果值为1,则它不是2(也不是3),因此“不是1或不是2或不是3”仍然是真的。事实上,任何价值都是如此,因为至少有两个(如果不是全部三个)都是真的。
答案 1 :(得分:2)
由于e
不能同时具有1,2和3的值,因此您的条件总是会评估为true。你的版本是
如果值不同于1或不同于2或不同于3,则执行此操作。
因此,您需要将其更改为更像
的内容如果值不是1或2或3那么
if(!(e == 1 || e == 2 || e == 3)){...}
或者你可以做到
if(e != 1 && e != 2 && e != 3){...}
将会读取
如果值不是1且不是2且不是3
这两个选项的结果是相同的。
答案 2 :(得分:2)
这是因为||意思是。或
if(e!=1 || e!=2 || e!=3)
如果你输入e = 1,你将有
if(false OR true OR true)
当然,评估为真。
你想要&&,这意味着,并导致:
if(e!=1 && e!=2 && e!=3)
如果您想维护代码结构。或者您可以接受其他人的建议,并将您的“其他”代码放入“if”块并使用==。
答案 3 :(得分:1)
您应该使用==
而不是!=
,如:
if(e==1 || e==2 || e==3)//then re enter value
使用if,表示如果e不是1,2,3,则要求用户重新输入值。
答案 4 :(得分:1)
原因很简单。例如,如果您输入值1
,则条件的第一部分返回false
,但其他两部分返回true
,则条件可以如下所示:
if( false || true || true ) {
...
}
因此,无论输入什么,对true
值都会有2 false
个值。要获得所需内容,请使用&&
代替||
。