私はこのコードを持っています。これは非常に単純な間違いのように見えるかもしれませんが、私はまだそれが何であるか把握することはできません。私の問題は、 'house1'の値がwhileループを終了してswitch文に移動できないということです。たとえば、house1 = 0と入力した場合、プログラムは「無効な値、再度入力してください」と印刷しますが、無効な値を入力した後house1 = 1と入力した場合は、「無効な値です。私のミスは何だったのでしょうか?whileループでC++を終了できません
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 <= house1'私はこれが逆転していると思います。 0は<= 1なので、もう一度尋ねます。 * also * 'case '1' 'と' case 1 'は同じものではありません。あなたのwhileループ条件は整数値1をチェックしていますが、case文が*文字* 1の整数値をチェックしています。 – Borgleader
'while'文の条件を注意深く読んでください。 'house1'が0に等しいとき、何をしますか? (また、そのステートメントの2つの比較のまわりの括弧の2つのセットが冗長であることに注意してください) –
'(0 <= house1)ではなく'(house1 <= 0) 'が欲しいと思います。 –