我有这个代码,它只是另一个更大代码的一部分。这似乎是一个非常简单的错误,但我仍然无法弄清楚它是什么。我的问题是' 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;
答案 0 :(得分:1)
如果您的有效值应该从1
到5
,则条件应为
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语句中的条件将不满足并且控件将走出循环。