Java 构建一个菜单的最佳选项是切换案例还是?

Java 构建一个菜单的最佳选项是切换案例还是?,java,if-statement,switch-statement,Java,If Statement,Switch Statement,我想制作一个菜单,仅当用户选择退出选项时,该菜单才会使程序停止。我想知道你对什么是最好的选择以及原因的看法 开关语句: do{ menu(); switch(option){ case 1: method1(); break; case 2: method2(); break; } } while(option != 3); System.out.println("Bye!"); return

我想制作一个菜单,仅当用户选择退出选项时,该菜单才会使程序停止。我想知道你对什么是最好的选择以及原因的看法

开关
语句:

do{
    menu();
    switch(option){
    case 1:
        method1();
        break;
    case 2:
        method2();
        break;
    }
} while(option != 3);
System.out.println("Bye!");
return;

递归方法中的顺序
if
语句:

Scanner input = new Scanner(System.in);
int option = input.nextInt();
menu();
public void menu(){
    if(option == 1){
        method1();
    }
    if(option == 2){
        method2();
    }
    if(option == 3){
        System.out.println("Bye!");
        return;
    }
    menu();
}

据我所知,
switch
语句就是为这种情况而设计的。
所以我会使用第一种方法。第二种方法非常奇特,

我第一次看到这种方法,我不确定它是否符合逻辑

好的,这是一个初学者的问题,但是:

 public enum MenuActions {
   ACTION1 , ACTION2, ACTION_EXIT
 }

即使不使用注释,也要尝试声明性。 只要看一眼消息来源,就会发现以前从未见过它的人身上发生了什么

然后,谈到递归的问题: 函数/方法调用堆栈的大小有限。
您应该避免使用未定义(用户定义)断链的递归编程。

您的第二种方法甚至不会编译。在Java中,不能在方法中声明函数。也可以无限接近循环,因为您不更新循环内的选项

由于各种原因,您的第一种方法更好

  • 它更容易阅读
  • 通常应避免递归(其速度较慢,占用更多内存,通常更难读取)
  • 使用switch语句比使用if-else语句有更好的性能。假设您想要最后一个选项,一个开关将直接分支到正确的案例,而一个if-else必须在下行过程中检查每个错误的情况

  • 它不是递归的?但是menu()正在调用它自己…你是对的。我没有注意到。第二种方法是递归的,如果option的值为1或2,将导致Stackoverflow异常。是的,这是真的。我是一个初学者。。。谢谢你的帮助,我们都很高兴。不客气!:)只是修改了代码,弄清楚我的想法是什么。菜单();3号线的电话不见了。非常感谢您的帮助。如果您对其中任何一个都满意,请务必接受答案。如果没有的话,你应该评论一下他们缺少了什么或者你不理解什么。非常感谢大家的帮助!
    switch(option) {
        case ACTION1:
           method1();
    
           break;
        ...
        case ACTION_EXIT;
            return;
    }