簡體   English   中英

試圖找出為什么我的代碼保持無限循環

[英]Trying to find out why my code keeps infinite looping

我對編程很陌生,所以請原諒我缺乏知識。 我正在嘗試創建一個簡單的菜單,我將在其中按 1、2、3 等執行一些問題,但我的代碼一遍又一遍地循環,我不明白為什么。

int main()
{
    int choice;
    do
    {
        cout << "\t|--------------------------- Menu ---------------------------|" << endl;
        cout << "1.|- Добавяне на телефонни номера -|" << endl;
        cout << "2.|- Извеждане на всички телефонни абонати на екрана -|" << endl;
        cout << "3.|- Месечно потребление -|" << endl;
        cout << "4.|- Изчисление на месечна такса -|" << endl;
        cout << "5.|- Справки за абонатите с под меню -|" << endl;
        cout << "6.|- Край на програмата -|" << endl;

    switch(choice)
        {
            case 1:
                break;
            case 2:
                break;
            case 3:
                break;
            case 4:
                break;
            case 5:
                break;
            case 6:
                    cout << "|- Благодаря ви -|" << endl;
                return 0;
        }  

   }       
while(choice != 6);
}

您需要在代碼中使用cin以便在每次循環時更改choice 處理無效的用戶輸入也是一個好主意。 這是由(!(cin >> choice))直到輸入將返回true 在這種情況下,您希望cin.clear()cin.ignore()重置流的狀態,以便您可以繼續要求用戶提供正確的輸入。

#include<iostream>
using namespace std;

int main()
{
    // it is a good idea to initialize the variable when you create it
    int choice = 0;
    do
    {
        cout << "\t|--------------------------- Menu ---------------------------|" << endl;
        cout << "1.|- Добавяне на телефонни номера -|" << endl;
        cout << "2.|- Извеждане на всички телефонни абонати на екрана -|" << endl;
        cout << "3.|- Месечно потребление -|" << endl;
        cout << "4.|- Изчисление на месечна такса -|" << endl;
        cout << "5.|- Справки за абонатите с под меню -|" << endl;
        cout << "6.|- Край на програмата -|" << endl;


        // this loop will handle incorrect inputs from the user
        // for example entering a char, when the stream is expecting an int
        while (!(cin >> choice))
        {
            cin.clear();
            cin.ignore();
            cout << "Please enter a valid choice: ";
            cin >> choice;
        }

        switch (choice)
        {
        case 1:
            break;
        case 2:
            break;
        case 3:
            break;
        case 4:
            break;
        case 5:
            break;
        case 6:
            cout << "|- Благодаря ви -|" << endl;
            return 0;
        }

    } while (choice != 6);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM