此代码在首次用户输入后将不起作用

this code will not work after first user input

本文关键字:输入 不起作用 用户 代码      更新时间:2023-10-16
#include <iostream>
using namespace std;
int main()
{
    double propValue,    //Property Value
           name,         //Full Name
           assessment,   //Assessment
           srAssessment, //Sr Assessment
           taxRate,      //Tax rate
           annualPropTax;    //Annual Property tax
    const double EXEMPT = 5000,      //shows the total after exemption
                 QUARTER = 4,        //represents the amount of quarters in year
                 TAXPERHUNDRED = 0.01,  //represents tax rate for every $100
                 SIXTYPERCENT = 0.6;  //Represents the tax based on 60% of original value

    //Gets name from user
    cout << "Please enter your full name: ";
    cin >> name;
    //gets property value from user
    cout << "Enter the actual value of the property: ";
    cin >> propValue;
    //Gets tax rate
    cout << "Enter the tax rate for each $100 of assessed value: ";
    cin >> taxRate;    
}

我认为我在这里做错了什么,但我无法弄清楚。 我对C++和整个编程都是新手。 当我运行此代码时,它不允许我在"name"变量之后输入任何内容,它只显示我的所有输出

首先,名称应该是字符串或字符数组,您定义为 C 样式的方式是:

using namespace std; 
maxNumOfCharacters = 10
char name[maxNumofCharacters];

然后,输入字符的方式如下:

#include <iostream>
cin.getline(name, maxNumofCharacters);
cout << "Name:" << name << "n";

你也可以将名称定义为字符串,你可以包括字符串库:

#include <string>
string name;

如果使用字符串库,则提取方式是使用 stringstream() 命令。

cout << "Enter Name:";
getline(cin, name);

希望这有帮助。

编辑:我找到了本教程并添加了此链接,以便您可以参考如何定义多个输入。还要检查C++中的常规变量类型。

http://www.cplusplus.com/doc/tutorial/basic_io/

如果输入无法转换为变量的类型,则来自std::cin的输入将失败。

在你的代码中,你要求一个名字,但变量namedouble的类型——如果你输入"acm818",开头的'a'将无法匹配。name中不存储任何内容(因此保持未初始化),输入不被消耗,程序继续。

(您可以通过if ( cin )检查此条件 - 如果输入操作失败,这将失败。

然后你要求一个值,再次读入一个double变量(propValue)。输入队列中仍有"acm818"在等待,因此程序不会暂停以请求新的输入,而是再次尝试将该字符串解析为double,并且匹配再次失败。

taxRate也一样.

即使您name声明为正确的类型,cin >> name也只会读取第一个空格......

因此,要读取整行输入并将其存储在字符串name中:

std::cout << "Please enter your name:n";
std::string name;
std::getline( cin, name );

至于从输入中读取数字,我建议在C++中采用与 C 中相同的方法:读取一整行,然后在内存中解析它。错误条件以这种方式处理要容易得多:

 std::cout << "Please enter a number:n";
 std::string input;
 std::getline( cin, input );
 double number = 0.0;
 try {
     number = std::stod( input );
 }
 catch ( std::invalid_argument const & ex ) {
     // input was not a number, do something about it
 }

上面的代码需要包含<string><stdexcept>

在C++中读取字符串的方法是使用cin.getline

char name[32];
std::cout << "Enter the namen";
std::cin.getline(name, 32);

另外,name应该是char[]而不是double