如何在Java中保持switch语句的连续性

问题描述 投票:0回答:3

我希望重复以下菜单:

选择选项

1-查找

2-在校内

3-掉队

因此,当用户选择一个选项(并且该选项将被执行)之后,他们也可以选择其他选项。

问题:我的代码使菜单重复执行而没有停止。

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

}

我不确定如何阻止它不断重复。

java while-loop switch-statement console-application infinite-loop
3个回答
0
投票

您代码中的一个问题是方法menu返回一个选项,因此它可以用于仅从控制台读取一个选项,或者用于执行整个对话框,直到用户决定退出为止。后者是更好的恕我直言,因为它使菜单的显示保持在switch状态菜单附近:


0
投票

所选选项在整个循环中保持不变。您需要将quit设置为true才能退出循环。我建议添加一个选项以退出switch语句,在此位置即可。


0
投票

为什么不使用递归调用call menu();在除第4种情况之外的所有情况下的break语句之前?

© www.soinside.com 2019 - 2024. All rights reserved.