虽然c ++中的循环无法退出

时间:2016-08-06 12:53:51

标签: c++ while-loop

我有这个代码,它只是另一个更大代码的一部分。这似乎是一个非常简单的错误,但我仍然无法弄清楚它是什么。我的问题是' house1'无法退出while循环并继续切换语句。例如,如果我输入house1 = 0,程序将打印"无效值,请再次输入"但如果我在输入无效值后输入house1 = 1,它也会打印"无效值,请再次输入"。有谁知道我的错误是什么?

cin >> house1 ;
while ((0 <= house1) || (house1 >= 6))
{
    cout << "Invalid value! please enter again:";
    cin >> house1;
}
switch (house1)
{
case '1':
    h1_p1 = h1_p1 - 5;
    h2_p1 = h2_p1 + 1;
    h3_p1 = h3_p1 + 1;
    h4_p1 = h4_p1 + 1;
    h5_p1 = h5_p1 + 1;
    house_p1 = house_p1 + 1;
    break;
case '2':
    h2_p1 = h2_p1 - 5;
    h3_p1 = h3_p1 + 1;
    h4_p1 = h4_p1 + 1;
    h5_p1 = h5_p1 + 1;
    house_p1 = house_p1 + 2;
    break;

2 个答案:

答案 0 :(得分:1)

如果您的有效值应该从15,则条件应为

while ((house1 <= 0) || (house1 >= 6))
{
    cout << "Invalid value! please enter again:";
    cin >> house1;
}

顺便说一句:您没有检查cin的无效输入(house1的{​​{3}})。

答案 1 :(得分:1)

此代码的主要问题是此声明

while ((0 <= house1) || (house1 >= 6))

看看你输入0,1,2,3,4,5,6,7,...或任何正整数(作为house1的值)这个while语句是否正确。

因此控件进入while循环并且在输入负数之前不会退出循环...因为当您输入负数时,while语句中的条件将不满足并且控件将走出循环。