1

你好,我正在写我的作业并且已经完成了,但是一件小事仍然让我感到困惑。我想验证浮点输入,所以如果用户键入 char 它应该显示错误消息。我的挣扎是,无论我做什么,我的循环要么不起作用,要么永远循环。非常感谢您的任何建议。

float fuel;
char ch= ???;

if(fuel==ch)
{
do
{cout<<"Input is not valid. Please enter numeric type!";
cin>>fuel;}

while(fuel!=ch);
4

4 回答 4

0

你试图这样做的方式是行不通的——因为你正在比较一个浮点数和字符,它们最明确地几乎永远不会相等。

试试这个方法:

bool notProper = true;
while(notProper) {
  std::string input;
  std::cin >> input
  if( input.find_first_not_of("1234567890.-") != string::npos ) {
    cout << "invalid number: " << input << endl;
  } else {
    float fuel = atof( num1.c_str() );
    notProper = false;
  }
};
于 2013-03-11T13:19:55.273 回答
0

我的部分来源,请忽略“错误”用法,它基本上只是抛出一个字符串错误:

//----------------------------------------------------------------------------------------------------
    inline double str_to_double(const std::string& str){
        char *end = NULL;
        double val = strtod(str.c_str(), &end);
        if(end == str.c_str() || end - str.c_str() != str.length())
            serror::raise("string '%s' does not represent a valid floating point value", str.c_str());
        if(val == +HUGE_VAL)
            serror::raise("string '%s' represents floating point value which is too big", str.c_str());
        if(val == -HUGE_VAL)
            serror::raise("string '%s' represents floating point value which is too small", str.c_str());

        return val;
    }
于 2013-03-11T13:29:18.160 回答
0
float num;

//Reading the value
cin >> num;

//Input validation
if(!cin || cin.fail())
{
    cout << "Invalid";
}
else
{
    cout << "valid";
}

您可以使用上述逻辑来验证输入!

于 2013-03-11T13:26:13.217 回答
0

试试这样的代码。

#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;

bool CheckFloat( istream & is, float& n ) {
    string line;
    if ( ! getline( is, line ) ) {
        return false;
    }
    char * ep;
    n = strtol( line.c_str(), & ep, 10 );
    return * ep == 0;
}


int main() {
    float n;

    while(1) {
        cout << "enter an float: ";
        if ( CheckFloat( cin, n ) ) {
            cout << "is float" << endl;
        }
        else {
            cout << "is not an float" << endl;
        }
    }
}
于 2013-03-11T13:22:24.520 回答