gpt4 book ai didi

c++ - 为什么我的 If/Else 语句 block 没有完全执行?

转载 作者:行者123 更新时间:2023-11-30 02:40:42 26 4
gpt4 key购买 nike

我正在为我的 CS 类(class)做一个简单的项目。目标是让一个人输入他们购买的每种水果(苹果、香蕉、橙子)的数量,程序计算总数并在最后出示发票。我的教授希望我们也包括一个输入检查,以验证输入是 0 到 100 之间的数字。为此,我有这部分代码。

string name;

int apples, oranges, bananas;
int FRUIT_MAX = 100;
int FRUIT_MIN = 0;
float appleCost, orangeCost, bananaCost,
subTotal, tax, total;

cout << "Welcome to Bob's Fruits, what is your name..." << endl;
getline(cin, name);

cout << "How many apples would you like" << endl;
cin >> apples;
cout << endl;

//checking if user entered a number for apples
if (apples >= FRUIT_MIN && apples <= FRUIT_MAX)
{
cout << "Thanks" << endl;
}
else //makes the user retype entry if invalid
{
cout << "Please input a number thats 0 or greater than 0. " << endl;
cin >> apples;
cout << endl;
}

cout << "How many oranges would you like" << endl;
cin >> oranges;

if (oranges >= FRUIT_MIN && oranges <= FRUIT_MAX) //checking to see if number is good
cout << "Thanks" << endl;
else //makes the user retype entry if invalid
{
cout << "Please input a number thats 0 or greater than 0." << endl;
cin >> oranges;
cout << endl;
}

cout << "How many bananas would you like" << endl;
cin >> bananas;

if (bananas >= FRUIT_MIN && bananas <= FRUIT_MAX)
cout << "Thanks";
else
{
cout << "Please input a number thats 0 or greater than 0.";
cin >> bananas;
cout << endl;
}

当我输入一个介于 0-100 之间的值时,我会收到正确的“谢谢”输出,然后它会转到下一个问题。当我输入 0-100 以外的数字时,else 语句成功触发,程序要求输入 0-11 之间的数字。

问题出在输入字母时。如果输入一个字母,程序将跳过剩余的每一行,忽略任何额外的 cin 命令,并显示带有所有负数的格式化发票。知道为什么会这样吗?

最佳答案

当 cin 获得无效值时,它会设置一个失败位。

int n;
cin >> n;
if(!cin)
{
//not a number, input again!
}

您需要使用 cin.ignore() 以便“重置”输入并再次请求输入。

关于c++ - 为什么我的 If/Else 语句 block 没有完全执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28759779/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com