我的返回语句出错,我不知道要修复

时间:2015-11-18 01:41:43

标签: 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 >> answer;
    switch (answer){
         case 0:
         return;
         break;
    }
    Diner()
}

每次输入0时,它都会再次转到Diner()。如果你反复垃圾0,它最终会起作用,但为什么它不会一直有效?

2 个答案:

答案 0 :(得分:0)

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

  1. 第10行Diner()后缺少分号。
  2. 由于break;之前正在使用return;,因此不需要procedure TForm1.cal1DayClick(Sender: TObject); var sTemp : String; begin cal1.StylesData['days.Selected.StyleLookup'] := 'ListBoxItemstyleCust'; end; 语句。

答案 1 :(得分:0)

我不认为你的意思是在这里使用递归。我建议使用while循环,而人们在各个位置。通过在case语句结束时再次调用相同的位置返回到同一区域,您将更深入地调用callstack,需要更多&#34;退出&#34;到&#34;离开&#34;房间。

像下面这样的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()。让它处理同一个房间,直到&#34;离开&#34;由循环完成,而不是不必要的递归。