繁体   English   中英

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

[英]How to solve infinite recursion in java (stack overflow)?

我有无限递归的问题。 Main方法将运行,然后如果我选择1,它将转到submenu()。 但是,当我在submenu()中选择了错误的选项时,该程序必须循环回到main方法。

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

您有与此想法相关的想法吗? 它如何不调用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();
      }
   }

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

因此,在上述情况下, switchsubMenu方法中的最后一个元素,因此在切换之后,该方法完成,因此返回。 只需删除对main()的调用即可。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM