构建一个菜单,switch-case或if-if-if的最佳选择?

时间:2014-04-25 21:33:44

标签: java if-statement switch-statement

我想创建一个菜单,只有当用户选择退出选项时才会使程序暂停。我想知道您对什么是最佳选择以及原因的看法。

switch声明:

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();
}

3 个答案:

答案 0 :(得分:0)

据我所知,switch声明仅针对此类情况而设计 所以我会使用第一种方法。第二种方法是非常奇特的恕我直言,
我第一次看到这种方法,我不确定它是否合乎逻辑。

答案 1 :(得分:0)

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

 public enum MenuActions {
   ACTION1 , ACTION2, ACTION_EXIT
 }

...

switch(option) {
    case ACTION1:
       method1();

       break;
    ...
    case ACTION_EXIT;
        return;
}

即使不使用注释,也要尝试声明。 一看消息来源就应该揭示以前从未见过的人会发生什么。

然后,接受关于递归的观点: 函数/方法调用堆栈的大小有限。 您应该避免使用未定义(用户定义的)断链的递归编程。

答案 2 :(得分:0)

你的第二种方法甚至无法编译。您不能在Java中的方法中声明函数。此外,任何一种方法都是无限循环的,因为你没有在循环中更新选项。

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

  1. 阅读起来容易得多。
  2. 通常应避免递归(速度较慢,使用更多内存,通常难以阅读)。
  3. 使用switch语句比一堆if-else更好。想象一下,如果你想要最后一个选项,一个开关将直接分支到正确的情况,而if-else必须在下行时检查每个错误的情况。
相关问题