Java创建菜单和子菜单cmd行程序

时间:2014-01-31 23:58:56

标签: java navigation cmd stack

对于课程我正在尝试设计一个菜单驱动的程序,它有子菜单。我有一些逻辑问题。

最初我这样做是为了让开关驱动菜单相互调用,子菜单会回调主菜单等等。有人告诉我,这最终将通过电话前进而不是倒退来摧毁筹码。我想证实这一点,也许可以理清我的循环逻辑。

我的愿望是,当用户在子菜单周1中点击r或x时,它会反弹并重新打印主菜单。目前子菜单只是重新打印,switch语句不起作用。我的猜测是主菜单的值仍然设置为1,但是如果我调用它并传递一个新值,我不会把堆栈1更深一些吗?

第一个菜单。

//method to print and navigate the main menu
public void mainMenu(String choice){
    toOutput.printMenu("src/datastructures/menus/main.txt");

    choice = input.myScanner.nextLine();

    do {

        switch (choice){
            case "1": toBaseNumberSystems.week1();
                      break;
            case "2": toOutput.printMenu("src/datastructures/menus/week2.txt");
                      break;
            case "3": toOutput.printMenu("src/datastructures/menus/week3.txt");
                      break;
            case "4": toOutput.printMenu("src/datastructures/menus/week4.txt");
                      break;
            case "5": toOutput.printMenu("src/datastructures/menus/week5.txt");
                      break;
            case "6": toOutput.printMenu("src/datastructures/menus/week6.txt");
                      break;
            case "7": toOutput.printMenu("src/datastructures/menus/week7.txt");
                      break;
            case "x": choice="x";
                      System.out.println("Goodbye");
                      break;
            default:  System.out.println("The character entered was not understood"
                    + ", please try again");
                      mainMenu(choice);
                      break;
        }
    } while (!"x".equals(choice));

仅调用week1菜单,然后调用其他菜单。

public void week1(){

    toOutput.printMenu("src/datastructures/menus/baseNumberSystems.txt");

    choice = input.myScanner.nextLine();
    do{
        switch (choice){

            case "1": toOutput.printMenu("src/datastructures/menus/week1Base8.txt");
                      week1Base8();
                      break;
            case "2": toOutput.printMenu("src/datastructures/menus/week1Base5.txt");
                      week1Base5();
                      break;
            case "3": toOutput.printMenu("src/datastructures/menus/week1Base4.txt");
                      week1Base4();
                      break;
            case "4": toOutput.printMenu("src/datastructures/menus/week1Base2.txt");
                      week1Base2();
                      break;
            case "r": choice="r";
                      break;
            case "x": choice="x";
                      System.out.println("Goodbye");
                      break;
            default:  System.out.println("The character entered wass not understood"
                    + ", please try again");
                      break;
        }
    }while (!"x".equals(choice)&&!"r".equals(choice));
 }

//method to print and control the base8 menu
 public void week1Base8(){
     int base;
    toOutput.printMenu("src/datastructures/menus/week1Base8.txt");

    choice = input.myScanner.nextLine();

    switch (choice){
        case "1": base=8;
                  toBase(base);
                  break;
        case "r": week1();
                  break;
        case "x": choice="x";
                  System.out.println("Goodbye");
                  break;
        default:  System.out.println("The character entered was not understood"
                + ", please try again");
                  break;
    }
 }
 // method to print and control the base5 menu
 public void week1Base5(){
    toOutput.printMenu("src/datastructures/menus/week1Base5.txt");
    int base;
    choice = input.myScanner.nextLine();

    switch (choice){
        case "1": base=5;
                  toBase(base);
                  break;
        case "r": week1();
                  break;
        case "x": choice="x";
                  System.out.println("Goodbye");
                  break;
        default:  System.out.println("The character entered was not understood"
                + ", please try again");
                  break;
     }
 }

 //method to print and control the base4 menu
 public void week1Base4(){
    toOutput.printMenu("src/datastructures/menus/week1Base4.txt");
    int base;
    choice = input.myScanner.nextLine();

    switch (choice){
        case "1": base=4;
                  toBase(base);
        case "r": week1();
                  break;
        case "x": choice="x";
                  System.out.println("Goodbye");
                  break;
        default:  System.out.println("The character entered was not understood"
                + ", please try again");
                  break;
     }
 }

 //method to print and control the base2 menu
 public void week1Base2(){
    toOutput.printMenu("src/datastructures/menus/week1Base2.txt");
    int base;
    choice = input.myScanner.nextLine();

    switch (choice){
        case "1": base=2;
                  toBase(base);
        case "r": week1();
                  break;
        case "x": choice="x";
                  System.out.println("Goodbye");
                  break;
        default:  System.out.println("The character entered was not understood"
                + ", please try again");
                  break;
     }
 }

0 个答案:

没有答案