while循环不在第二个循环上工作

时间:2018-01-14 16:31:03

标签: c++

我正在尝试输入一个整数用于输入并仅在数字为< = 2000时打印它,否则要求用户一次又一次地重新输入该数字。

当我输入一个大于2000的数字时,它要求我再次输入数字(这正是我想要做的),如果我输入一个大于2000的数字再次它什么也没做。这个循环似乎永远在运行,但我不知道自己做错了什么。任何帮助表示赞赏。

这是用C ++编写的代码。

#include <iostream>

using std::cout;
using std::endl;
using std::cin;

int main(){

unsigned int a = 0 ;
int out = 1;

cout << "Please enter a number : " << endl;

while (out){
    cin >> a;
    if (a > 2000) {
        cout << "Number is greater than 2000 !" << endl;
        cout << endl;
        cout << "Please enter the number again : " << endl;
        cin >> a;
        out = 1;
    } else {
        cout << "Your entered number is : " << endl << a << endl;
        out = 0;
    }
}
return 0;
}

3 个答案:

答案 0 :(得分:1)

  

如果我再次输入大于2000的数字则无效

这是不对的,它正在等待您输入下一个cin输入。因为cin值大于2000的循环中有两个a,所以cin没有得到提示。

您的程序可以简化很多,更改while loop部分如下

while (out){
    cin >> a;
    out=a>2000?1:0;
    if(out)
       cout<<"Enter number again ";
}

答案 1 :(得分:1)

我没有测试过,但你可以试试这个:

#include <iostream>

using std::cout;
using std::endl;
using std::cin;

int main(){

unsigned int a = 0 ;

cout << "Please enter a number : " << endl;

while (true){
    cin >> a;
    if (a > 2000) {
        cout << "Number is greater than 2000 !" << endl;
        cout << endl;
        cout << "Please enter the number again : " << endl;
    } else {
        cout << "Your entered number is : " << endl << a << endl;
        break;
    }
}
return 0;
}

答案 2 :(得分:1)

if (a > 2000)

不要cin,你的代码将开始工作,原因是你不需要在这里输入,因为循环会为你做。