-3

出于某种原因,这个非常简单的 while 循环一直在无限循环。也许我已经盯着这个太久了,或者犯了一些非常明显的愚蠢错误。有人可以帮我修复代码吗?我尝试输入“ste”,但它一直给我无效的输出。

while (type1 != "nor" || type1 != "fir" || type1 != "wat" || type1 != "ele" || type1 != "gra" || type1 != "ice" || type1 != "fig"|| type1 != "poi" || type1 != "gro" || type1 != "fly" || type1 != "psy" || type1 != "bug" || type1 != "roc" || type1 != "gho" || type1 != "dra" || type1 != "dar" || type1 != "ste" || type1 != "fai" || type1 != "n/a")
{
    cout << "Invalid type. Re-enter type." << endl;
    cin >> type1;
}
4

2 回答 2

1

您的条件将始终为真,对于 type1 的任何给定值,必须不同于您指定的所有值(最多)保存一个。

如果你使用 && 而不是 || 你会得到你想要达到的目标

于 2013-10-26T18:29:42.487 回答
1

这个循环不可能永远结束。这种外观可能结束的唯一可能方式是type1同时成为nor, fir, wat, ...。您可能想用 ands ( ) 替换所有 ors ( ||) &&type1在这种情况下,您的循环将在等于比较字符串之一(nor, fir, ... )时停止wat,这当然是可能的。

于 2013-10-26T18:29:47.537 回答