假设我有一个带文本界面的游戏。现在,当开始游戏时,玩家需要告诉游戏他们的年龄。
public void getAge() {
System.out.println("Please enter your age");
int age;
try {
Scanner sc = new Scanner(System.in);
age = sc.nextInt();
} catch (InputMismatchException e) {
System.out.println("You made a mistake. Let's start this over!");
getAge();
}
gameLoop(age);
}
假设用户犯了100个错误,并且一遍又一遍地调用该方法。 100个呼叫是否保留在呼叫堆栈中?有没有办法删除它们,可能是通过返回一个值来代替?
这是内存泄漏(虽然很小)?
无论如何,我想听听你的想法,以及如何改进。
答案 0 :(得分:3)
尝试一个循环(Just pseudocode)
bool done = false;
while (!done)
{
try {
// Get the age
if (valid) { done = true; }
}
catch { // ...
// Handle the exception make sure done is still false
}
} // End while