我有一个包含字符串的用户输入数据的字符串向量。现在我需要确保如果字符串不同于指定的少数,程序将不会执行。 Vector包含4个字段,每个字段都有不同的条件:
我试着为每种条件写作:
if(tokens[0]!="1" || tokens[0]!="0"){
decy = "error";
}
else if(tokens[1]!="red" || tokens[1]!="green"){
decy = "error";
}
else if(tokens[2]!="1" || tokens[2]!="2" || tokens[2]!="3"){
decy = "error";
}
else if(tokens[3]!="1" || tokens[3]!="0"){
decy = "error";
}
else{
switch(){} //working code
}
return decy;
它始终先输入if并返回错误。我尝试使用 if 而不是 else if ,但它也不起作用。我检查了vector[i]
内容并返回正确的字符串。最后没有“”等。删除 else 并释放开关只是使程序检查第一个条件并忽略其余部分。
我可能做的事情非常糟糕,但我无法在互联网上找到答案,所以我决定在这里问。
答案 0 :(得分:3)
这一行:
if(tokens[0]!="1" || tokens[0]!="0")
应该是:
if(tokens[0]!="1" && tokens[0]!="0")
^^
其他if
语句也是如此。
答案 1 :(得分:2)
您应该将||
转换为&&
。如果输入只能是X
或Y
,则表示如果输入不是X
且而不是Y
,则表示非法1}:
if (tokens[0] != "1" && tokens [0] !="0")
// ^^
答案 2 :(得分:2)
条件无效。
任何不同的值都可以满足您的条件。
您应该使用&&
代替||
。
例如:
if (tokens[0] != "1" || tokens[0] != "0") {
考虑这一行。如果tokens[0]
是"1"
,这是有效输入,它将不满足第一个条件,但它将满足第二个条件。您只希望在值既不是有效的可能输入时抛出错误。
这意味着您的条件应为:
if (tokens[0] != "1" && tokens[0] != "0") {
所有其他人也一样。
答案 3 :(得分:0)
第一个if:
if(tokens[0]!="1" || tokens[0]!="0")
始终评估为true
。