Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 试图找出为什么我的代码保持无限循环_C++ - Fatal编程技术网

C++ 试图找出为什么我的代码保持无限循环

C++ 试图找出为什么我的代码保持无限循环,c++,C++,我对编程很陌生,请原谅我知识的缺乏。我试图创建一个简单的菜单,在其中我将通过按1、2、3等来执行一些问题。但是我的代码不断循环,我不明白为什么 int main() { int choice; do { cout << "\t|--------------------------- Menu ---------------------------|" << endl; cout << "1.|- Доба

我对编程很陌生,请原谅我知识的缺乏。我试图创建一个简单的菜单,在其中我将通过按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);
}
intmain()
{
智力选择;
做
{

cout您需要在代码中使用
cin
,以便在每次循环时更改
选项
。处理无效的用户输入也是一个好主意。这是通过
(!(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);
}
#包括
使用名称空间std;
int main()
{
//最好在创建变量时初始化它
int-choice=0;
做
{

难道你不能初始化或输入一些东西到
choice
中吗?使用
std::cin
choice
一个值。
choice
在你的代码中有不确定的值。你需要阅读输入:
cin>>choice;switch(choice){…
调试器中程序员的秘密武器。使用它来逐步检查有问题的代码,并准确地查看程序在做什么。轻微改进(减少重复):删除
cin>>选项;
s并将
while(cin.fail())
替换为
while(!(cin>>选项))
。执行读取,然后立即进行测试。我同意这是一种更好的方法。