java - 从堆栈中删除方法调用

标签 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 个调用是否保留在调用堆栈中?有什么方法可以删除它们,也许通过返回一个值来代替?

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

无论如何,我想听听您对如何改进这一点的想法。

最佳答案

尝试循环(只是伪代码)

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

关于java - 从堆栈中删除方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49289805/

相关文章:

java - Android Studio 如何将我的项目与 mySQL db 连接(新闻提要应用程序)

java.lang.NoClassDefFoundError Main(错误名称: com/leslie/quiz/Main)

java - 断言部分页面源代码不起作用

java - intellij uml,两个依赖但应该是一个

java - 无法实例化类;没有空构造函数

java - Spring-Data-Jpa - 使用多个命名参数时出现空指针异常

java - 如何使用 UiAutomator 运行包(而不是类)?

java - 从 Java 文件夹中导入我的类

java - 当方法中的某些线程完成时如何返回方法?

java - findbugs和数据库密码安全问题