如何解决java中的无限递归(堆栈溢出)?

时间:2012-04-19 15:33:39

标签: java

我有无限递归的问题。主方法将运行,如果我选择1,它将转到子菜单()。但是,当我在子菜单()中选择错误的选项时,程序必须循环回主方法。

但是,这种情况可能导致堆栈溢出。

你对这个问题有什么想法吗?它如何在不调用main()的情况下循环回main方法?

非常感谢你们。

   public void main() {
      // variables omitted
      while (menu) {

         switch (option) {
         case 1:
            subMenu();
            break;
         }
      }

   }

   public void subMenu() {
      switch (a) {
      case 1:
      case 2:
      default:
         System.out.println("Invalid Option");
         main();
      }
   }

1 个答案:

答案 0 :(得分:4)

您不需要调用main()返回main方法,从方法返回,您说return <vairable>,或者如果方法是void返回类型,则不需要返回在方法的最后。如果您想从不是方法结尾的地方返回,您仍然可以说return

所以在上面的例子中,switchsubMenu方法中的最后一个元素,所以在切换之后,方法就完成了,所以返回。只需删除对main()的调用。

查看http://docs.oracle.com/javase/tutorial/java/javaOO/returnvalue.html