如何将输入限制为仅数字

大牛肉

我最近创建了一个程序,该程序将根据用户输入创建数学问题。通过输入1-4,程序可能会产生问题,或者用户可以通过输入5退出。我遇到的唯一问题是,当我输入字符时,程序会陷入无限循环。我可以使用什么功能检查输入的数字是否为数字,以便显示错误消息?


//CIS180 Assignment #4
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
using namespace std;

int main()
{
    //Declare variables.
    int num1, num2, menuNum;
    int addInput, subInput, multInput, divInput;
    int addAnswer, subAnswer, multAnswer, divAnswer;
    int addSolution, subSolution, multSolution, divSolution;
    srand(time(0));
    //Display menu.
    cout << "Menu" << endl;
    cout << "1. Addition problem" << endl;
    cout << "2. Subtraction problem" << endl;
    cout << "3. Multiplication problem" << endl;
    cout << "4. Division problem" << endl;
    cout << "5. Quit this program" << endl << endl;
    cout << "Enter your choice (1-5): " << endl;
    cin >> menuNum;
    //Loop that will provide math problems when user inputs number.
    while(menuNum != 5)
    {
        //Check if the input is valid.
        while((menuNum < 1) || (menuNum >5))
        {
            cout << "The valid choices are 1, 2, 3 , 4, and 5. Please choose: " << endl;
            cin >> menuNum;
        }
        //Generate two random numbers for addition and display output.
        if(menuNum == 1)
        {
            num1 = rand()%500 + 1;
            num2 = rand()%500 + 1;
            addSolution = num1 + num2;
            cout << setw(5) << right << num1 << endl;
            cout << setw(2) << left << "+" << setw(3) << right << num2 << endl;
            cout << setw(5) << fixed << "-----" << endl;
            cin >> addAnswer;
            //Check if the addition answer input is correct.
            if(addAnswer != addSolution)
                cout << "Sorry, the correct answer is " << addSolution << "." << endl;
            else if(addAnswer == addSolution)
                cout << "Congratulations! That's right." << endl << endl;
        }
        .
            .
            .
迪特玛·库尔(DietmarKühl)

首先,您应该检测输入尝试是否成功:始终读取检查读取尝试是否成功。接下来,当您确定无法读取一个值时,您需要使用将流重置为良好状态,clear()并且需要消除任何不良字符,例如,使用ignore()给定字符通常是输入的,即,用户必须在使用字符之前按回车键,通常可以合理地获得整行。例如:

for (choice = -1; !(1 <= choice && choice <= 5); ) {
    if (!(std::cin >> choice)) {
         std::cout << "invalid character was added (ignoring the line)\n";
         std::cin.clear();
         std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    }
}

使用std::numeric_limits<std::streamsize>::max()的方法是获取幻数,该幻数将ignore()根据需要生成尽可能多的字符,直到找到具有第二个自变量值的字符为止。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将Primefaces inputMask限制为仅数字?

来自分类Dev

如何将HTML的输入值限制为仅预定义列表中的值?

来自分类Dev

Excel数据验证-如何将输入限制为数字和破折号?

来自分类Dev

如何将输入字段值限制为特定数字

来自分类Dev

如何将输入限制为不能输入字符 #

来自分类Dev

如何将中断信号限制为仅子进程?

来自分类Dev

如何将结果限制为仅不同的结果?

来自分类Dev

如何将Finder搜索限制为仅程序?

来自分类Dev

如何将输入整数限制为1到9

来自分类Dev

如何将输入数量限制为100

来自分类Dev

如何将输入限制为某个值?

来自分类Dev

原型。将输入限制为数字

来自分类Dev

如何将html输入限制为两位十进制的正十进制数字?

来自分类Dev

如何将用户的输入限制为仅在 C++ 中输入数字和字母

来自分类Dev

Unity3d 4.6 beta17 UI将输入文本限制为仅数字

来自分类Dev

将 HTML 输入限制为仅数字,最大长度为 5(忽略其他字符)

来自分类Dev

如何将方法限制为仅接受具有特定限制的参数?

来自分类Dev

使用AngularJS将输入限制为数字输入字段

来自分类Dev

使用AngularJS将输入限制为数字输入字段

来自分类Dev

如何在Delphi XE5中将输入限制为仅字母?

来自分类Dev

如何将Github Post-Receive WebHook限制为仅master分支

来自分类Dev

如何将“在Visual Studio中查找所有引用”限制为仅涉及的变量

来自分类Dev

如何将应用程序限制为仅Android手机

来自分类Dev

如何将Gerrit的访问权限限制为仅几个Google电子邮件地址?

来自分类Dev

如何将角度摘要限制为仅影响/重新渲染一个组件/指令

来自分类Dev

使用dplyr :: filter,如何将输出限制为仅前500行?

来自分类Dev

如何将Bootstrap Datepicker日期视图限制为仅Year

来自分类Dev

如何将通用数据结构限制为仅允许特定接口的元素?

来自分类Dev

如何将Android应用程序限制为仅平板电脑?

Related 相关文章

  1. 1

    如何将Primefaces inputMask限制为仅数字?

  2. 2

    如何将HTML的输入值限制为仅预定义列表中的值?

  3. 3

    Excel数据验证-如何将输入限制为数字和破折号?

  4. 4

    如何将输入字段值限制为特定数字

  5. 5

    如何将输入限制为不能输入字符 #

  6. 6

    如何将中断信号限制为仅子进程?

  7. 7

    如何将结果限制为仅不同的结果?

  8. 8

    如何将Finder搜索限制为仅程序?

  9. 9

    如何将输入整数限制为1到9

  10. 10

    如何将输入数量限制为100

  11. 11

    如何将输入限制为某个值?

  12. 12

    原型。将输入限制为数字

  13. 13

    如何将html输入限制为两位十进制的正十进制数字?

  14. 14

    如何将用户的输入限制为仅在 C++ 中输入数字和字母

  15. 15

    Unity3d 4.6 beta17 UI将输入文本限制为仅数字

  16. 16

    将 HTML 输入限制为仅数字,最大长度为 5(忽略其他字符)

  17. 17

    如何将方法限制为仅接受具有特定限制的参数?

  18. 18

    使用AngularJS将输入限制为数字输入字段

  19. 19

    使用AngularJS将输入限制为数字输入字段

  20. 20

    如何在Delphi XE5中将输入限制为仅字母?

  21. 21

    如何将Github Post-Receive WebHook限制为仅master分支

  22. 22

    如何将“在Visual Studio中查找所有引用”限制为仅涉及的变量

  23. 23

    如何将应用程序限制为仅Android手机

  24. 24

    如何将Gerrit的访问权限限制为仅几个Google电子邮件地址?

  25. 25

    如何将角度摘要限制为仅影响/重新渲染一个组件/指令

  26. 26

    使用dplyr :: filter,如何将输出限制为仅前500行?

  27. 27

    如何将Bootstrap Datepicker日期视图限制为仅Year

  28. 28

    如何将通用数据结构限制为仅允许特定接口的元素?

  29. 29

    如何将Android应用程序限制为仅平板电脑?

热门标签

归档