与字符串的向量比较

Vector comparison with string

本文关键字:比较 向量 字符串      更新时间:2023-10-16

我有一个包含字符串的用户输入数据的字符串向量。现在我需要确保程序不会执行,如果字符串不同于指定的少数。Vector包含4个字段,每个字段有不同的条件:

  • 矢量[0]只能为"1"或"0"
  • 向量[1]只能是"红色"或"绿色"
  • 向量[2]只能是"1"、"2"或"3"
  • 矢量[3]只能为"1"或"0"

我试着为每一个条件写if:

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并返回error。我尝试用if代替else if,但它也不起作用。我检查了vector[i]内容,它返回正确的字符串。不要在信的末尾加上"等等。删除else和释放开关只会使程序检查第一条件而忽略其余条件。

我可能做错了什么,但是我在网上找不到答案,所以我决定在这里问。

这一行:

if(tokens[0]!="1" || tokens[0]!="0")
应:

if(tokens[0]!="1" && tokens[0]!="0")
                  ^^

对于其他if语句也是如此。

条件无效。

任何不同的值都可以满足您的条件。

你应该用&&而不是||

例如:

if (tokens[0] != "1" || tokens[0] != "0") {

考虑这一行。如果tokens[0]"1",这是一个有效的输入,它将不满足第一个条件,但它将满足第二个条件。只有当值不是两个有效的可能输入时,才会抛出错误。

这意味着你的条件应该是:

if (tokens[0] != "1" && tokens[0] != "0") {

其他的也一样

你应该把这些||变成&&。如果输入只能是XY,这意味着当它不是X 而不是Y:

时,它是非法的。
if (tokens[0] != "1" && tokens [0] !="0")
//                   ^^

第一个if:

if(tokens[0]!="1" || tokens[0]!="0")

ALWAYS求值为true