簡體   English   中英

我的退貨陳述書有錯誤,我不知道要解決

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

在我制作的文字冒險游戲中,所有不同的地方都運行着我的不同功能。 在我的餐廳,市場和供應商店中,我有一條帶數字1-10的switch語句。 所有1-9都能正常工作,但10則無效。 所有這些方法都返回到一個名為TownCenter()的方法,但是在這三個方法上,當我返回時,您必須對其進行垃圾郵件處理才能起作用。 這是一個代碼示例:

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循環。 通過在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);

注意,我不會在最后再次調用Diner() 讓它處理同一房間,直到循環完成“離開”,而不是不必要的遞歸為止。

暫無
暫無

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

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