我已尝试过此代码的一些不同变体,但我似乎无法做到正确。我对c ++很新,所以可以解释一下。此代码是简单计算器的一部分。它基本上要求用户输入两个数字(它们可以是浮点数),然后要求用户输入数学运算符然后进行操作。如果用户输入的内容不是数字,然后在要求从if语句再次输入数字时输入数字,则控制台会打印" -9.25596e + 061"。这是代码:
#include "stdafx.h"
#include <iostream>
#include <cctype>
using namespace std;
double getUserInput()
{
//Make double, assign double, return double if number
double dUserInput;
//checks if it failed to cin
if (!(cin >> dUserInput))
{
//statement is true
cin.clear();
cin.ignore(99999, '\n');
cout << "You did not enter a number, please try again: ";
getUserInput();
}else
//statement if false
cout << "Number entered"; //for debugging purposes
return dUserInput;
}
答案 0 :(得分:3)
您错过了在return
的递归调用中添加getUserInput
。
更改行
getUserInput();
到
return getUserInput();
<强>更新强>
您可以将该功能更改为非递归版本。
double getUserInput()
{
//Make double, assign double, return double if number
double dUserInput;
//checks if it failed to cin
while (!(cin >> dUserInput))
{
cin.clear();
cin.ignore(99999, '\n');
cout << "You did not enter a number, please try again: ";
}
cout << "Number entered"; //for debugging purposes
return dUserInput;
}