如何使用 do while 和 switch 返回上一个菜单?
How do you go back to the previous menu with do while and switch?
我在一个 do-while 循环中有一个 do-while 循环,并为每个循环切换大小写。
我希望主菜单永远循环,并希望主菜单案例在某些情况下返回主菜单。
例如:
//main menu
do {
case 1:
do {
case 1:
case 2:
} while(something);
//go back to main menu
case 2:
case 3:
case 4:
} while(true);
如何在 Java 代码中实现此目的?
下面是我的代码供您参考(如果您需要的话):)
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
do {
System.out.println("[1] Priority Queue");
System.out.println("[2] 2D Array");
System.out.print("Please choose a data structure: ");
int num = scanner.nextInt();
switch (num) {
// ==================== PriorityQueue ====================
case 1:
System.out.println("\n=== Priority Queue Test ===\n");
System.out.print("Enter size of priority queue: ");
PriorityQueue pq = new PriorityQueue(scanner.nextInt());
char a;
/* Perform Priority Queue operations */
do {
System.out.println("\nPriority Queue Operations\n");
System.out.println("1. insert");
System.out.println("2. remove");
System.out.println("3. check empty");
int choice = scanner.nextInt();
switch (choice) {
case 1:
System.out.print("Enter job name and priority: ");
pq.insert(scanner.next(), scanner.nextInt());
break;
case 2:
System.out.println("\nJob removed \n\n" + pq.remove());
break;
case 3:
System.out.println("\nEmpty Status: " + pq.isEmpty());
break;
default:
System.out.println("Wrong Entry \n ");
break;
}
System.out.println("\nDo you want to continue? (y or n) \n");
a = scanner.next().charAt(0);
} while (a == 'Y' || a == 'y' || a != 'N' || a != 'n');
break;
// ==================== 2D Array ====================
case 2:
TwoDimensionalArray array = new TwoDimensionalArray();
System.out.println("\n=== 2D Array Test ===\n");
System.out.println("Enter size of 2D Array: ");
int DIM = scanner.nextInt();
int[][] table = new int[DIM][DIM];
char b;
do {
System.out.println("1. insert [x][y] coordinate");
System.out.println("2. remove [x][y] coordinate");
System.out.println("3. empty");
System.out.println("4. print");
int choice = scanner.nextInt();
switch (choice) {
case 1:
array.insert(table, scanner);
break;
case 2:
array.remove(table, scanner);
break;
case 3:
array.empty(DIM);
break;
case 4:
array.print(DIM, table);
break;
}
System.out.println("\nDo you want to continue? (y or n) \n");
b = scanner.next().charAt(0);
} while (b == 'Y' || b == 'y' || b != 'N' || b != 'n');
break;
default:
System.out.println("Please choose a number on the list!\n");
}
while (num == 1 || num == 2 || num == 3 || num == 4 || num == 5 || num == 6 || num == 7 || num == 8 || num == 9
|| num == 10 || num == 11 || num == 12 || num == 13 || num == 14 || num == 15 || num == 16 || num == 17)
;
} while (true);
}
}
看看你的 while 条件。
while (a == 'Y' || a == 'y' || a != 'N' || a != 'n');
这始终计算为 true
,因此您永远不会离开内部循环。
您需要将其更改为
while ((a == 'Y' || a == 'y') && (a != 'N' || a != 'n'));
这部分似乎没有必要
while (num == 1 || num == 2 || num == 3 || num == 4 || num == 5 || num == 6 || num == 7 || num == 8 || num == 9
|| num == 10 || num == 11 || num == 12 || num == 13 || num == 14 || num == 15 || num == 16 || num == 17)
;
如果您删除它并相应地更改 while 条件,它应该可以工作。
我在一个 do-while 循环中有一个 do-while 循环,并为每个循环切换大小写。
我希望主菜单永远循环,并希望主菜单案例在某些情况下返回主菜单。
例如:
//main menu
do {
case 1:
do {
case 1:
case 2:
} while(something);
//go back to main menu
case 2:
case 3:
case 4:
} while(true);
如何在 Java 代码中实现此目的?
下面是我的代码供您参考(如果您需要的话):)
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
do {
System.out.println("[1] Priority Queue");
System.out.println("[2] 2D Array");
System.out.print("Please choose a data structure: ");
int num = scanner.nextInt();
switch (num) {
// ==================== PriorityQueue ====================
case 1:
System.out.println("\n=== Priority Queue Test ===\n");
System.out.print("Enter size of priority queue: ");
PriorityQueue pq = new PriorityQueue(scanner.nextInt());
char a;
/* Perform Priority Queue operations */
do {
System.out.println("\nPriority Queue Operations\n");
System.out.println("1. insert");
System.out.println("2. remove");
System.out.println("3. check empty");
int choice = scanner.nextInt();
switch (choice) {
case 1:
System.out.print("Enter job name and priority: ");
pq.insert(scanner.next(), scanner.nextInt());
break;
case 2:
System.out.println("\nJob removed \n\n" + pq.remove());
break;
case 3:
System.out.println("\nEmpty Status: " + pq.isEmpty());
break;
default:
System.out.println("Wrong Entry \n ");
break;
}
System.out.println("\nDo you want to continue? (y or n) \n");
a = scanner.next().charAt(0);
} while (a == 'Y' || a == 'y' || a != 'N' || a != 'n');
break;
// ==================== 2D Array ====================
case 2:
TwoDimensionalArray array = new TwoDimensionalArray();
System.out.println("\n=== 2D Array Test ===\n");
System.out.println("Enter size of 2D Array: ");
int DIM = scanner.nextInt();
int[][] table = new int[DIM][DIM];
char b;
do {
System.out.println("1. insert [x][y] coordinate");
System.out.println("2. remove [x][y] coordinate");
System.out.println("3. empty");
System.out.println("4. print");
int choice = scanner.nextInt();
switch (choice) {
case 1:
array.insert(table, scanner);
break;
case 2:
array.remove(table, scanner);
break;
case 3:
array.empty(DIM);
break;
case 4:
array.print(DIM, table);
break;
}
System.out.println("\nDo you want to continue? (y or n) \n");
b = scanner.next().charAt(0);
} while (b == 'Y' || b == 'y' || b != 'N' || b != 'n');
break;
default:
System.out.println("Please choose a number on the list!\n");
}
while (num == 1 || num == 2 || num == 3 || num == 4 || num == 5 || num == 6 || num == 7 || num == 8 || num == 9
|| num == 10 || num == 11 || num == 12 || num == 13 || num == 14 || num == 15 || num == 16 || num == 17)
;
} while (true);
}
}
看看你的 while 条件。
while (a == 'Y' || a == 'y' || a != 'N' || a != 'n');
这始终计算为 true
,因此您永远不会离开内部循环。
您需要将其更改为
while ((a == 'Y' || a == 'y') && (a != 'N' || a != 'n'));
这部分似乎没有必要
while (num == 1 || num == 2 || num == 3 || num == 4 || num == 5 || num == 6 || num == 7 || num == 8 || num == 9
|| num == 10 || num == 11 || num == 12 || num == 13 || num == 14 || num == 15 || num == 16 || num == 17)
;
如果您删除它并相应地更改 while 条件,它应该可以工作。