将值返回到switch语句的C ++函数

时间:2014-03-09 03:18:03

标签: c++ function switch-statement do-while

目前我有一个工作计划,但我正在尝试不同的事情,看看它们是否有效。下面是我试图开始工作的代码,但有一个要求用户做出选择的功能。我想将该值返回到我的main函数中,该函数将运行包含case的do while循环。最初我把它作为if else if语句,但是如果可能的话想要减少它。以下是我正在使用的代码。运行程序时,它只返回整个菜单,而不是从应该返回的值运行函数。

 {
        int choice;
        createEmptySeats();
        seatPrice();

        do {
            choice = menu();
            switch (choice)
            {
            case '1': 
                reserveSeat();
                break;
            case '2': 
                displayInfo();
                break;
            case '3': 
                DisplaySummary();
                break;
            case '4': 
                break;
            }
        }
        while (!seatFull());

        return 0;
    }


        int menu() 
        {
            int userSelection = -1;
            while (userSelection < 1 || userSelection > 4) 
            {
                cout << "Please Choose Option Below" << endl;
                cout << "1: Reserve Seat(s)"<<endl;
                cout << "2: Display Available Seats" << endl;
                cout << "3: Display Information:" << endl;
                cout << "4: Exit System" << endl;
                cin >> userSelection;
            }
            return userSelection;
        }

{ int choice; createEmptySeats(); seatPrice(); do { choice = menu(); switch (choice) { case '1': reserveSeat(); break; case '2': displayInfo(); break; case '3': DisplaySummary(); break; case '4': break; } } while (!seatFull()); return 0; } int menu() { int userSelection = -1; while (userSelection < 1 || userSelection > 4) { cout << "Please Choose Option Below" << endl; cout << "1: Reserve Seat(s)"<<endl; cout << "2: Display Available Seats" << endl; cout << "3: Display Information:" << endl; cout << "4: Exit System" << endl; cin >> userSelection; } return userSelection; }

2 个答案:

答案 0 :(得分:1)

首先:您在每个案例的switch语句中都缺少break;,案例4除外(不确定是否符合设计)。

第二:选择为int,您的案例为char。更改其中一个,以便它们都匹配。你从来没有找到适合自己案例的匹配,所以你只是继续循环。

答案 1 :(得分:1)

choice是int,你写的是char - '1','2'。写如下:

    choice = menu();
    switch (choice)
    {
    case 1: 
        reserveSeat();
        break;
    case 2: 
        displayInfo();
        break;
    // ...

在你的代码中,当选择的是ASCII代码'1'时,你可以来case '1',即49.在你的代码中,它永远不会发生,所以你用菜单()停留在无限循环中。 / p>