C++ 我的返回语句有一个错误,我没有';我不知道如何修理
在我正在制作的文本冒险游戏中,所有不同的地方都运行我的不同功能。在我的餐厅、市场和供应店,我有一个数字为1-10的切换语句。所有1-9个都可以,但10个不行。所有这些方法都返回到名为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
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,它最终会起作用,但为什么它不会一直起作用呢?我认为代码中没有任何错误,除了以下注意事项:
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
,然后看看你是否一直遇到问题。每次他们不回镇上时,你都在不知不觉中使用递归。为什么不在你提出要求后立即打印答案
,然后确保它返回了它应该返回的内容。