我有一个任务是制作一个计算两个数字的程序。 并且还显示每个数字之间的计算。
如果我输入一个字母而不是数字,程序会崩溃,这是一个更高级的任务,我不需要这样做,但我真的想知道如何做到这一点。所以这就是我的问题,我如何让程序给我一个警告,告诉我不要使用字母,如果你输入一封信,你仍然可以输入数字,而不是崩溃。
这是我的代码到目前为止的样子
块引用
float nmr1, nmr2;
cout << "Write two numbers.\n";
cin >> nmr1;
cin >> nmr2;
cout << "\n";
cout << nmr1 << " + " << nmr2 << " = " << nmr1 + nmr2 << endl;
cout << nmr1 << " - " << nmr2 << " = " << nmr1 - nmr2 << endl;
cout << nmr1 << " * " << nmr2 << " = " << nmr1 * nmr2 << endl;
cout << nmr1 << " / " << nmr2 << " = " << nmr1 / nmr2 << endl;
cin.get();
cin.get();
return 0;
也许有更容易写的东西,但我是初学者,我会使用搜索工具,但我不知道要搜索什么。
答案 0 :(得分:2)
cin >> var_of_type_float
将返回false
。因此,只需在条件表达式中使用它,例如:
if (cin >> nmr1) { // all ok
答案 1 :(得分:1)
如果要检查输入,通常的方法是读取一个字符串,检查是否有无效字符,然后将其解析为一个数字(C ++中带有实数的繁琐任务)并存储在一个浮点数中,最后,用这些花车进行操作。
如果您还没有处理文本输入,我建议您等待实现此功能,因为对于初学者来说编程可能很复杂
答案 2 :(得分:0)
要检查是否通过cin
收到错误输入,请使用以下条件:
if(!cin){
// bad input was received, don't use cin again.
}
答案 3 :(得分:0)
真正崩溃的是零分割操作。
如果输入的数字无效,则nmr1和nmr2将为0
和nmr1 / nmr2会崩溃。在尝试分割之前,您必须检查(nmr2!= 0)。