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:
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
.