[英]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,它最終會起作用,但是為什么它不會一直起作用?
除了以下注意事項,我認為代碼沒有任何錯誤:
Diner()
之后缺少分號。 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.