C ++ While循环无限循环,即使是正确的答案

时间:2013-10-26 18:24:55

标签: c++ infinite-loop

出于某种原因,这个非常简单的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;
}

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

这个循环永远不可能结束。此外观可能结束的唯一可能方式是type1同时为norfirwat,....您可能希望用ands(||)替换所有ors(&&)。在这种情况下,您的循环会在type1等于其中一个比较字符串(norfirwat ...)时停止,当然这是可能。