有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何制作菜单直到用户输入退出

我想循环输入(重复),直到输入5退出。例如,我输入1显示案例1,然后再次请求输入,输入4和显示案例4。直到我输入5退出

下面的代码只是不断询问我的输入,从不向我显示输出

public static void main(String[] args){
        System.out.println("1.Soup\n2.Main Course\n3.Dessert\n4.Beverage\n5.Exit");
        //ask input from user
        System.out.println("Enter your choice: ");
        Scanner scan=new Scanner(System.in);
        int input=scan.nextInt();
        int check=input;
        //keep looping until user input 5 which is Exit
        while (input!=5){
             System.out.println("Please enter 1-5\n1.Soup\n2.Main Course\n3.Dessert\n4.Beverage\n5.Exit");
             int input1=scan.nextInt();
             check=input1;
        }
        switch (check){
            case 1 :
                System.out.println("1.Mushroom Soup\n2.Miso Soup\n3.Tomato Soup");
                break;
            case 2 :
                System.out.println("1.Chiken Katsu Don\n2.Curry Katsu Don\n3.Teriyaki Katsu Don\n4.Curry Udon");
                break;
            case 3 :
                System.out.println("1.Matcha Ice Cream\n2.Chocolate Ice Cream\n3.Oreo Chocolate\n4.Dango");
                break;
            case 4 :
                System.out.println( "1.Green Tea\n2.Matcha RedBean\n3.Chocolate MilkShake\n4.Strawberry Ice Blended");
                break;
            case 5 :
                System.exit(0);
               break;
        }
    }
}

共 (3) 个答案

  1. # 1 楼答案

    您的switch语句超出了while-loop范围

            while (input!=5)
            {
                System.out.println("Please enter 1-5\n1.Soup\n2.Main Course\n3.Dessert\n4.Beverage\n5.Exit");
                int input1=scan.nextInt();
                check=input1;
                switch (check)
                {
                case 1 :
                    System.out.println("1.Mushroom Soup\n2.Miso Soup\n3.Tomato Soup");
                    break;
                case 2 :
                    System.out.println("1.Chiken Katsu Don\n2.Curry Katsu Don\n3.Teriyaki Katsu Don\n4.Curry Udon");
                    break;
                case 3 :
                    System.out.println("1.Matcha Ice Cream\n2.Chocolate Ice Cream\n3.Oreo Chocolate\n4.Dango");
                    break;
                case 4 :
                    System.out.println( "1.Green Tea\n2.Matcha RedBean\n3.Chocolate MilkShake\n4.Strawberry Ice Blended");
                    break;
                case 5 :
                    System.exit(0);
                   break;
                }        
           }
    

    编辑:另外,正如其他人在最近的回答中指出的,您的循环条件变量没有在循环中重置(但这是您提出的问题附带的,可以说是一个不同的问题)

  2. # 2 楼答案

    switch应该在while内。只有在处理第一个输入后,才能请求另一个输入

    while (input is valid)
        get input
        process input
    
  3. # 3 楼答案

    你需要做两个修正。首先,将switch块移动到while循环中。其次,while循环永远不会终止,因为您只分配input一次

    我只能想象,这种混乱是由于代码中有太多变量造成的:inputinput1check

    在我看来,您的代码可以大大简化。考虑下面的选择-我们可以使用一个简单的^ {< CD7>}循环,因为当{{CD8}}进入时,您计划退出VM:

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
    
        while (true) {
    
            System.out.println("Please enter 1-5\n1.Soup\n2.Main Course\n3.Dessert\n4.Beverage\n5.Exit");
    
            int input = scan.nextInt();
    
            switch (input) {
            case 1:
                System.out.println("1.Mushroom Soup\n2.Miso Soup\n3.Tomato Soup");
                break;
            case 2:
                System.out.println("1.Chiken Katsu Don\n2.Curry Katsu Don\n3.Teriyaki Katsu Don\n4.Curry Udon");
                break;
            case 3:
                System.out.println("1.Matcha Ice Cream\n2.Chocolate Ice Cream\n3.Oreo Chocolate\n4.Dango");
                break;
            case 4:
                System.out.println("1.Green Tea\n2.Matcha RedBean\n3.Chocolate MilkShake\n4.Strawberry Ice Blended");
                break;
            case 5:
                System.exit(0);
                break;
            }
        }
    }