提示用户输入正数,并继续提示用户,直到他们输入正数c ++

时间:2014-11-09 00:00:36

标签: c++

//review3
#include <iostream>
#include <cstdlib>
#include <string>
#include <fstream>
using namespace std;

int number;
int main()
{
        cout << "Enter a positive number" << endl;
        cin >> number;
        while (number < 0)
        {
            cout << "Enter a positive number" << endl;
        }
        if (number > 0)
        {
            cout << "Awesome job!" << endl;
        }
        return 0;
}

到目前为止,这是我的代码。我开始使用else,但如果用户输入负数,程序就会关闭。我将其更改为while循环并陷入无限循环。之前我有一个if和else if语句。我需要继续提示用户,直到他们在c ++中输入正数。

5 个答案:

答案 0 :(得分:3)

您的while()循环没有继续提示输入,这就是您获得无限循环的原因 - 因为number永远不会改变!

您可以将输入操作放入while()循环中,如下所示:

while (cin >> number && number < 0)
{
    cout << "Enter a positive number: " << endl;
}

if (cin)
{
    cout << "Awesome job" << endl;
}

因此,在循环的每次迭代期间,将提示用户输入。

我们之后检查cin的状态,以确保上述循环因输入无效(或根本没有输入)而没有停止。

答案 1 :(得分:0)

#include <iostream>
#include <string>
#include <cstring>
int main()
{
    while(true)
    {
        std::cout << "Pleaase enter a positive number." << std::endl;
        std::string buf;
        int x = -255;
        std::cin >> buf;
        x = std::atoi(buf.c_str());
        if(x > 0)
        {
            break;
        }
    }
    std::cout << "Awesome Job!" << std::endl;
}

答案 2 :(得分:0)

#include <iostream>
using namespace std;

int number;
int main()
{
    cout << "Enter a positive number" << endl;
    cin >> number;
    if (number < 0) {
    cout << "Enter a positive number" << endl;
    }
    else {
    cout << "Awesome job!" << endl;
    }
    return 0;
}

答案 3 :(得分:0)

您可以检查是否获得了数字或字符串here

确保在这种情况下你应该输入字符串变量。如果要将其转换为整数,可以使用std::stoi

答案 4 :(得分:-1)

您也可以执行此代码段。使用#include <ctype.h> or <cctype>

while(1){
  cin>>number;
  if(number<0 || isalpha(number)) return 0;
  cout<<"Awesome Job";
}