Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.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++_Switch Statement_Return - Fatal编程技术网

C++ 我的返回语句有一个错误,我没有';我不知道如何修理

C++ 我的返回语句有一个错误,我没有';我不知道如何修理,c++,switch-statement,return,C++,Switch Statement,Return,在我正在制作的文本冒险游戏中,所有不同的地方都运行我的不同功能。在我的餐厅、市场和供应店,我有一个数字为1-10的切换语句。所有1-9个都可以,但10个不行。所有这些方法都返回到名为TownCenter()的方法,但在这3个方法中,当我返回时,您必须发送垃圾邮件才能使其工作。下面是一个代码示例: void Diner(){ int answer; cout << "Blah, blah. Type '0' to go back to town.\n"; cin

在我正在制作的文本冒险游戏中,所有不同的地方都运行我的不同功能。在我的餐厅、市场和供应店,我有一个数字为1-10的切换语句。所有1-9个都可以,但10个不行。所有这些方法都返回到名为
TownCenter()
的方法,但在这3个方法中,当我返回时,您必须发送垃圾邮件才能使其工作。下面是一个代码示例:

void Diner(){
    int answer;
    cout << "Blah, blah. Type '0' to go back to town.\n";
    cin >> answer;
    switch (answer){
         case 0:
         return;
         break;
    }
    Diner()
}
void Diner(){
int答案;
回答;
开关(应答){
案例0:
返回;
打破
}
食客()
}

每次键入0时,它都会再次转到
Diner()
。如果你一遍又一遍地发送垃圾邮件0,它最终会起作用,但为什么它不会一直起作用呢?

我认为代码中没有任何错误,除了以下注意事项:

  • 第10行中的
    Diner()
    后缺少分号
  • 中断返回时,不需要code>语句在它之前被使用

  • 我不认为你的意思是在这里使用递归。我建议在人们处于不同位置时使用while循环。通过在case语句末尾再次调用同一位置返回同一区域,您将在调用堆栈中走得更深,需要更多的“出口”才能“离开”房间

    类似以下的do-while循环将很好地工作:

    int answer;
    do {
        cout << "Blah, blah. Type '0' to go back to town.\n";
        cin >> answer;
        switch (answer){
             // other case statements
             case 0:
                 break;
        }
    } while (answer != 0);
    
    int答案;
    做{
    回答;
    开关(应答){
    //其他案件陈述
    案例0:
    打破
    }
    }while(答案=0);
    

    注意,最后我没有再次调用
    Diner()
    。让它处理同一个房间,直到“离开”由循环而不是不必要的递归完成。

    您要求
    10
    ,但检查
    0
    ?我建议你将
    10
    全部替换为
    0
    ,然后看看你是否一直遇到问题。每次他们不回镇上时,你都在不知不觉中使用递归。为什么不在你提出要求后立即打印
    答案
    ,然后确保它返回了它应该返回的内容。