我希望我的while
循环在用户输入1或2时停止。如果输入任何其他内容则应该重复。我尝试在变量名称前加上一个感叹号并使用等号。我尝试使用单个或运算符。
petId
变量得到了正确的数字 - 我看到NSLog()
为" Dog"和" Cat"。尽管输入了1或2,为什么循环仍在循环?
int petId;
while(petId != 1 || petId!=2)
{
NSLog(@"%d",petId);
NSLog(@"Would you like to create a dog or a cat?\n1.Dog 2.Cat");
//Scan user input
scanf("%i",&petId);
if(petId == 1)
{
NSLog(@"Dog");
}
else if(petId==2)
{
NSLog(@"Cat");
}
else
{
NSLog(@"Invalid Entry");
}
}
答案 0 :(得分:4)
好的,你会自己踢。
||
表示OR。如果EITHER表达式为真:(petId != 1)
或(petId != 2)
,则循环将继续。
petID == 1
则petID != 2
为真。petID == 2
则petID != 1
为真。petID == 3
则两者都是真的。您正在寻找&&
。
while (exp1 && exp2) { ...
只要petId
不是1而不是2,循环就会继续。
答案 1 :(得分:1)
如果输入为2,则不是1.
如果您的输入为1,那么它不是2.
因此你的(petId!= 1 || petId!= 2)条件总是如此。
替换为(petId!= 1&& petId!= 2),你就完成了!
答案 2 :(得分:0)
你可能在布尔运算符中犯了一个错误: 替换
while(petId != 1 || petId!=2)
使用
while(petId != 1 && petId!=2)
答案 3 :(得分:0)
如果petId != 1 || petId!=2
不等于1 或它不等于2,则表达式petId
为真,并且因为它不能同时为1和2时间这个表达总是正确的......
尝试petId != 1 && petId != 2