C ++ If语句行为不端

时间:2017-08-03 00:07:51

标签: c++ if-statement user-input

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

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语句分成两个(一个用于&lt; 1,一个用于&gt; 12),或者为des&gt; 1&amp;&amp;添加新的if语句。 des&lt; 12调用函数,没有一个工作。我使用if语句为用户输入提供了几次以前的万无一失,总是运行良好,所以这次我真的无法找到错误。有人可以告诉我如何解决它吗?

2 个答案:

答案 0 :(得分:3)

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语句,以便你的程序继续到下一行,这恰好是你的无效输入行。删除分号,你是金色的:))

答案 1 :(得分:2)

错误地补充说;在if

 if (des> 12 || des< 1);
相关问题