C++ 如果语句行为不端

C++ If statement misbehaving

本文关键字:行为不端 语句 如果 C++      更新时间:2023-10-16

我是一个新手(就像 2 周前一样开始学习编码(,我真的很感激一些帮助来解释为什么我的代码不起作用。 我写了一个简单的代码来计算概率。这不是真正重要的部分。代码需要一些用户输入,所以为了使其万无一失,我为各种错误的输入(错误的数据类型、数字太高、数字太低(编写了两个 if 语句来抛出错误消息并杀死程序。如果输入是正确的(意味着 if 语句的所有条件都不为真(,它应该调用函数 diceTwo(des(。 但是,如果我输入数字 8 - 这应该没问题 - 出于某种我无法弄清楚的原因 - 它会触发数字太高/太低 if 语句,所以无论我输入什么数字,该函数都不会被调用。

cin >> des;
if (cin.fail())
{
cin.clear();
cin.ignore(100, 'n');
cout << "Invalid input! Use only whole positive numbers!" << endl;
cout << "Try again." << endl;
return -1;
}
if (des> 12 || des< 1);
{
cout << "Invalid input!" << endl;
cout << "Remember the only possible values are from 2 to 12!" << endl;
cout << "Try again." << endl;
return -1;
}
diceTwo(des);
cout << "The probability of this roll is " << x << "%" << endl;

这是制造麻烦的部分。我已经尝试将有问题的if语句分成两部分(一个用于<1,一个用于>12(,或者为des>1&& des<12添加新的if语句来调用该函数,但没有一个起作用。我之前使用过几次if语句为用户输入提供万无一失,总是运行良好,所以这次我似乎真的找不到问题所在。任何人都可以告诉我如何解决它吗?

if 语句后有一个分号。仔细观察:

if (des> 12 || des< 1);   //<----- semi colon
{
cout << "Invalid input!" << endl;
cout << "Remember the only possible values are from 2 to 12!" << endl;
cout << "Try again." << endl;
return -1;
}

分号终止 if 语句,以便程序继续到下一行,这恰好是无效的输入行。去掉分号,你就是金:)

错误地添加了 ; in if

if (des> 12 || des< 1);