2

無限再帰に問題があります。main メソッドが実行され、1 を選択すると submenu() に移動します。しかし、submenu() で間違ったオプションを選択すると、プログラムはメイン メソッドにループ バックする必要があります。

ただし、この状況ではスタック オーバーフローが発生する可能性があります。

この問題に関連するアイデアはありますか?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();
      }
   }
4

1 に答える 1

4

main()メインメソッドに戻るために呼び出す必要はなく、メソッドから戻るために呼び出す必要はありませんreturn <vairable>. returnメソッドの終わりではない場所から戻りたい場合は、まだ言うことができます。

したがって、上記の場合、メソッドswitchの最後の要素であるsubMenuため、切り替え後、メソッドは終了するため、戻ります。への呼び出しを削除するだけmain()です。

http://docs.oracle.com/javase/tutorial/java/javaOO/returnvalue.htmlをご覧ください。

于 2012-04-19T16:11:18.930 に答える