【发布时间】:2021-03-17 15:32:03
【问题描述】:
所以当我输入一个字符或字符串时,它会再次询问这个问题,但会无限次......但我希望它每次错误时询问一次,如果错误则再次询问。得到它... ? :( 现在循环是无限的。
#include <iostream>
using namespace std;
int main() {
float money;
do
{
cout << "How much money do you have? " << endl;
cin >> money;
if (money) {
cout << "You have: " << money << "$" << endl;
} else {
cout << "You have to enter numbers, try again." << endl;
}
} while (!money);
return 0;
}
【问题讨论】:
-
if (money)等价于if(money != 0),它不检查输入是否有效(您需要定义什么是有效输入)。它只检查money的值,它总是一个数字。 -
可能不是数字。当
std::cin应该将它们放入数字类型时键入字符串可能会导致这种情况发生。对于这种类型的验证,我通常建议将其作为字符串输入,并查看转换是否完全成功。 -
这能回答你的问题吗? Good input validation loop using cin - C++ (虽然这取决于您是否只想验证某些输入、整行或其他内容。但这应该向您展示总体思路,尤其是关于清除和重置
cin的部分) -
我希望用户输入
$10或类似的不是数字的东西。 -
我以前没有见过重复的,我比我的字符串方法更喜欢它,因为它需要 try/catch。虽然,字符串方法可以“更严格”。
int的输入可以使用std::cin方法接受double。
标签: c++ windows loops while-loop do-while