通过switch语句循环

时间:2014-11-22 02:11:08

标签: java while-loop switch-statement

所以我正在编写一个基于菜单的程序,我被困在一个部分。这是我的代码:

public static void main(String [] args) throws FileNotFoundException {
    switch (menu()) {
        case 1:
            System.out.println("Stub 1");
            menu();
            break;
        case 2:
            System.out.println("Stub 2");
            menu();
            break;
        case 3:
            System.out.println("Stub 3");
            menu();
            break;
        case 4:
            System.out.println("Program Terminated");
            break;

    }

}

public static int menu() {
    System.out.println("Choose a task number from the following: ");
    System.out.println("\t1. - See histogram of name's popularity");
    System.out.println("\t2. - Compare two names in a specific decade");
    System.out.println("\t3. - Show what name had a specific rank for a certain decade");
    System.out.println("\t4. - Exit program");
    int opt = 0;
    int option = getInt(input,"Enter number (1-4): ", 1, 4);
    if (option == 1) {
        opt = 1;
    }
    else if (option == 2) {
        opt = 2;
    }
    else if (option == 3) {
        opt = 3;
    } 
    else {
        opt = 4;
    }
    return opt;
}

我的问题是,如何在按下选项后让菜单“重置”。例如,我选择1,程序执行操作,完成后,它再次显示选项菜单,直到我按4终止它。

我的代码中的getInt方法只返回1到4之间的int。

4 个答案:

答案 0 :(得分:2)

一个简单的选择是声明一个布尔变量并将switch包裹在while循环中,例如。

Boolean quit = false;
while (!quit)        //or do-while
{
    int opt = menu();
    switch(opt)
    {
        //other cases...
        case 4:
            quit = true;
    }
}

我不确定为什么你在每种情况下都会调用菜单。

答案 1 :(得分:1)

我不在java中编码,但尝试将其指向每个案例末尾的默认大小写,这样当您编程完成操作时,它将默认返回菜单。

答案 2 :(得分:1)

对于我的菜单,我总是在do-while循环中包装菜单选项和请求。

do{
menu code...
} while (menu() != 4);

答案 3 :(得分:1)

您可以将代码保持在无限循环中,并在按下4时退出程序。 在所有情况下都不需要调用menu()因为您必须在每次迭代中只显示一个菜单。

使用

进行无限循环
while(true) {
  //some code
}

退出程序使用:

System.exit(0);

试试这个:

while(true) {
     int choice = menu();
     switch (choice) {
        case 1:
            System.out.println("Stub 1");

            break;
        case 2:
            System.out.println("Stub 2");

            break;
        case 3:
            System.out.println("Stub 3");

            break;
        case 4:
            System.out.println("Program Terminated");
            System.exit(0); // for terminating the program

    }

}