从堆栈中删除方法调用

时间:2018-03-15 00:37:06

标签: java

假设我有一个带文本界面的游戏。现在,当开始游戏时,玩家需要告诉游戏他们的年龄。

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个呼叫是否保留在呼叫堆栈中?有没有办法删除它们,可能是通过返回一个值来代替?

这是内存泄漏(虽然很小)?

无论如何,我想听听你的想法,以及如何改进。

1 个答案:

答案 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