java - 如何在Java中保持switch语句继续

标签 java while-loop switch-statement console-application infinite-loop

我希望重复以下菜单:

Choose an Option

1 - FIND

2 - IN-SHUFFLE

3 - OUT-SHUFFLE

这样当用户选择一个选项(并且这将被执行)时,他们也可以选择其他选项。

问题:我的代码使菜单不断重复。

import java.util.Scanner;

public class MainMenu {
    public static void main(String[] args) {
        int userChoice;
        userChoice = menu();
    }

    private static int menu() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Choose an Option");
        System.out.println("1 - FIND");
        System.out.println("2 - IN-SHUFFLE");
        System.out.println("3 - OUT-SHUFFLE");

        int choice = scanner.nextInt();
        boolean quit = false;
        do {
            System.out.println("Choose an Option");
            switch (choice) {
                case 1:
                    System.out.println("\n1 - FIND\n");
                    //Deck.findTop();
                    break;
                case 2:
                    System.out.println("\n2 - IN-SHUFFLE\n");
                    // call method
                    break;
                case 3:
                    System.out.println("\n3 - OUT-SHUFFLE\n");
                    // call method
                    break;
                default:
                    System.out.println("\nInvalid Option");
                    break;
            }
        }
        while (!quit);

        return choice;
    }

}

我不知道如何才能阻止它不断重复。

最佳答案

代码中的一个问题是方法 menu 返回一个选项,因此它可以用于仅从控制台读取一个选项,也可以用于执行整个对话框,直到用户决定辞职。恕我直言,后者更好,因为它使菜单的显示靠近 switch 语句:

private static void menu()
{
    Scanner scanner = new Scanner(System.in);

    System.out.println("Choose an Option");
    System.out.println("1 - FIND");
    System.out.println("2 - IN-SHUFFLE");
    System.out.println("3 - OUT-SHUFFLE");
    System.out.println("4 - QUIT");

    boolean quit = false;
    do {
        System.out.println("Choose an Option");
        int choice = scanner.nextInt();

        switch (choice) {
            case 1:
                System.out.println("\n1 - FIND\n");
                Deck.findTop();
                break;
            case 2:
                System.out.println("\n2 - IN-SHUFFLE\n");
                // call method
                break;
            case 3:
                System.out.println("\n3 - OUT-SHUFFLE\n");
                // call method
                break;
            case 4:
                System.out.println("\n4 - QUIT");
                quit = true;
                break;
            default:
                System.out.println("\nInvalid Option");
                break;
        }
    }
    while (!quit);
}

关于java - 如何在Java中保持switch语句继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59411268/

相关文章:

java - 在 IF 条件中使用 NOT 运算符

linux - 查找重复对比较两个文件

java - While 循环建议?

C++ 为什么这行得通

java - 在 Mule 中测试子流

java - 来自 HttpURLConnection 的对象的 InputStream 未获取所有数据

C - switch 语句中作为 case 的函数参数

java - 在 Java 中使用 Return 和 Switch 来计算形状的面积

java - c - .class 的等价物

java - 为什么这段代码会进入无限循环?