你怎么回到上一个菜单做什么和切换?

时间:2016-10-07 18:17:24

标签: java menu switch-statement do-while back

我在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);
  }
}

1 个答案:

答案 0 :(得分:0)

看看你的条件。

asciiCharArray

这总是评估为while (a == 'Y' || a == 'y' || a != 'N' || a != 'n'); ,因此你永远不会离开内循环。

您需要将其更改为

true

这部分似乎没必要

while ((a == 'Y' || a == 'y') && (a != 'N' || a != 'n'));

如果你删除它并相应地更改while条件,它应该可以工作。