我的返回语句有一个错误,我不知道要修复

I have an error with my return statements that I don't know to fix

本文关键字:我不知道 错误 返回 语句 有一个 我的      更新时间:2023-10-16

在我正在制作的一款文本冒险游戏中,所有不同的地方都运行着我不同的功能。在我的餐厅、市场和供应商店里,我有一个数字为1-10的switch语句。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()
}

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

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

  1. 第10行Diner()后面缺少分号
  2. break;语句不是必需的,因为return;在它之前使用

我不认为您打算在这里使用递归。我建议在人们处于不同位置时使用while循环。通过在案例陈述的末尾再次调用相同的位置以返回到相同的区域,您在调用堆栈中进行了更深的调用,需要更多的"出口"才能"离开"房间。

像下面这样的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);

请注意,最后我不再调用Diner()。让它处理同一个房间,直到通过循环而不是不必要的递归完成"离开"。

相关文章: