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

  • 本文关键字:提示 用户 他们 c++ 继续 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++ 中输入正数。

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

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

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

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

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

#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;
}

你可以在这里检查你是否得到数字或字符串

当然,在这种情况下,您应该获得字符串变量的输入。如果要将其转换为整数,可以使用std::stoi

#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;
}

你也可以做这个片段。使用#include <ctype.h> or <cctype>

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

最新更新