Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

I want my menu to be repeated until I decide to exit

For now, my code receives an input, and executes the code that matches the number(user input), and terminates automatically. However, I want my menu to keep showing up until the user decides to exit(number 8 in my case).

Given the following code:

    int[] main_array; 
    main_array = new int[500];

    boolean choice = false;

    int menu = 0;

    Random randomvar = new Random(); //creating random class object


    for(int i = 0; i < 500; i++){

        main_array[i] = randomvar.nextInt(1000) + 1;

    }

    while(!choice){
        while(true){
            Scanner sc = new Scanner(System.in);
            System.out.println( "Enter 1: Output all values\n"+
                                "Enter 2: Output the sum and mean of the values\n"+
                                "Enter 3: Output all odd numbers\n"+
                                "Enter 4: Output all even numbers\n"+
                                "Enter 5: Output Middle Value\n"+
                                "Enter 6: Output First value\n"+
                                "Enter 7: Output Last value\n"+
                                "Enter 8: Exit");
            try{
                menu = sc.nextInt();
                break;
            } catch(Exception e) {
                System.out.println("Wrong input");
            }
        }
        switch(menu){
            case 1:
                choice = true;
                
                for(int i = 0; i < 500; i++){

                    System.out.print(main_array[i] + " ");
                }
                break;

            case 2:
                choice = true;

                int sum = 0;

                for(int i = 0; i < 500; i++){

                    sum += main_array[i];

                }
                System.out.println("sum: " + sum);

                System.out.println("Mean average: " + (sum / 500));

                break;

            case 3:
                choice = true;

                for(int i = 0; i < 500; i++){

                    if(main_array[i] % 2 == 1)

                        System.out.print(main_array[i] + " ");
                }
                break;

            case 4:
                choice = true;

                for(int i = 0; i < 500; i++){

                    if(main_array[i] % 2 == 0)

                        System.out.print(main_array[i] + " ");
                }
                break;

            case 5:
                choice = true;

                System.out.println(main_array[500/2]);

                System.out.println(main_array[500/2]-1);
                break;

            case 6:
                choice = true;

                System.out.println(main_array[0]);

                break;

            case 7:
                choice = true;

                System.out.println(main_array[500 - 1]);

                break;

            case 8:
                System.out.println("Exit the program");

                return;

            default:
                System.out.println("Invalid input!");

                break;

        }
    }
}

I want my menu to be keep repeated until I input the number 8, so I tried to edit my code by replacing the switch-statement inside the while(true) loop, but the output shows like this:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

Enter 1: Output all values
Enter 2: Output the sum and mean of the values
Enter 3: Output all odd numbers
Enter 4: Output all even numbers
Enter 5: Output Middle Value
Enter 6: Output First value
Enter 7: Output Last value
Enter 8: Exit

2

Enter 1: Output all values
Enter 2: Output the sum and mean of the values
Enter 3: Output all odd numbers
Enter 4: Output all even numbers
Enter 5: Output Middle Value
Enter 6: Output First value
Enter 7: Output Last value
Enter 8: Exit

5

Enter 1: Output all values
Enter 2: Output the sum and mean of the values
Enter 3: Output all odd numbers
Enter 4: Output all even numbers
Enter 5: Output Middle Value
Enter 6: Output First value
Enter 7: Output Last value
Enter 8: Exit

Fixed code:

    int[] main_array; 
    main_array = new int[500];

    boolean choice = false;

    int menu = 0;

    Random randomvar = new Random(); //creating random class object


    for(int i = 0; i < 500; i++){

        main_array[i] = randomvar.nextInt(1000) + 1;

    }

    while(!choice){
        while(true){
            Scanner sc = new Scanner(System.in);
            System.out.println( "Enter 1: Output all values\n"+
                                "Enter 2: Output the sum and mean of the values\n"+
                                "Enter 3: Output all odd numbers\n"+
                                "Enter 4: Output all even numbers\n"+
                                "Enter 5: Output Middle Value\n"+
                                "Enter 6: Output First value\n"+
                                "Enter 7: Output Last value\n"+
                                "Enter 8: Exit");
            try{
                menu = sc.nextInt();
                break;
            } catch(Exception e) {
                System.out.println("Wrong input");
            }
            switch(menu){
                case 1:
                    choice = true;
                    
                    for(int i = 0; i < 500; i++){

                        System.out.print(main_array[i] + " ");
                    }
                    break;

                case 2:
                    choice = true;

                    int sum = 0;

                    for(int i = 0; i < 500; i++){

                        sum += main_array[i];

                    }
                    System.out.println("sum: " + sum);

                    System.out.println("Mean average: " + (sum / 500));

                    break;

                case 3:
                    choice = true;

                    for(int i = 0; i < 500; i++){

                        if(main_array[i] % 2 == 1)

                            System.out.print(main_array[i] + " ");
                    }
                    break;

                case 4:
                    choice = true;

                    for(int i = 0; i < 500; i++){

                        if(main_array[i] % 2 == 0)

                            System.out.print(main_array[i] + " ");
                    }
                    break;

                case 5:
                    choice = true;

                    System.out.println(main_array[500/2]);

                    System.out.println(main_array[500/2]-1);
                    break;

                case 6:
                    choice = true;

                    System.out.println(main_array[0]);

                    break;

                case 7:
                    choice = true;

                    System.out.println(main_array[500 - 1]);

                    break;

                case 8:
                    System.out.println("Exit the program");

                    return;

                default:
                    System.out.println("Invalid input!");

                    break;
        }
        }
    }

How should I fix it?

>Solution :

You can remove the while(true) loop and instead of setting choice=true in all the cases just set it to true in the case 8.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading