//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";
}