退出Class While While并返回主方法?

时间:2018-05-31 05:01:53

标签: java

好吧我又回来了,我遇到了一堵新墙。我试图找出如何与ticketInput()分手并返回我的mainInputMenu()。这不是我的整个代码,而是为了收集我想要做的事情的想法,我认为这足以理解我的问题。

主要方法----

public class Tickets {

public static void main(String[] args) {

    mainInputMenu();

}

    private static void mainInputMenu() {

    Machine whichMachine = new Machine();

    int machineNumber = Machine.readInput();

    while ( machineNumber == 1 ) {
        machineOne ( machineNumber );
    }
    while ( machineNumber == 2 ) {
        Machine machineTwo = new Machine();
    }
    while ( machineNumber == 3 ) {
        System.exit(0);
    }

}

private static void machineOne(int machineNumber) {
    Machine.option = 1;
    Machine.writeOutput();
    Machine.ticketInput();
}
}

在课程档案中​​-------

public static void ticketInput() {

    Scanner keyboard = new Scanner ( System.in );
    String ticketCounter;
    int counter = 0;

    do {
        System.out.printf ( "Your choice: " );
        ticketCounter = keyboard.next();
        if ( ticketCounter.matches ( "[0-9]+" ) ) {
            counter = Integer.parseInt ( ticketCounter );
        }
        if ( counter < 1 || counter > 11 ) {
            System.out.println ( "Try again!" );
        }
    } while ( counter < 1 || counter > 11 );

    switch (counter) {
        case 1:
            rSelected = "Uptown";
            break;
        case 2:
            rSelected = "Downtown";
            break;
        case 3:
            aSum = aSum + 1;
            break;
        case 4:
            if ( aSum > 0 ) {
                aSum = aSum - 1;
            }
            else {
                System.out.println ( "Cannot go below 0." );
            }

            break;
        case 5:
            cSum = cSum + 1;
            break;
        case 6:
            if ( cSum > 0 ){
                cSum = cSum -1;
            }
            else {
                System.out.println ( "Cannot go below 0." );
            }
            break;
        case 7:
            creditSum = creditSum + 0.25;
            break;
        case 8:
            creditSum = creditSum + 1.00;
            break;
        case 9:
            creditSum = creditSum + 2.00;
            break;     
        case 10:
            System.out.println ( "-----------------\n"
                    + "YOU GOT YOUR TICKET!!!\n"
                    + "-----------------");
            System.exit(0);
        case 11:
            //Return to main menu
        default:
            break;
    }

我感谢任何可以指导我解决这个问题的意见。我觉得这似乎是一个简单的陈述,我似乎无法从互联网中挖掘出来。

2 个答案:

答案 0 :(得分:0)

如果您从函数return返回调用函数。

System.exit(0)的调用将终止您的申请。

因此,请将System.exit(0)替换为return;

你必须添加一个循环来连续获取main方法中的菜单和其他功能,如下所示:

 public static void main(String[] args) {
  while(true) {
    // Add some breaking option here.
    mainInputMenu();
  }

}

答案 1 :(得分:0)

您可以像这样更改mainInputMenu()

private static void mainInputMenu() 
{ 

     Machine whichMachine = new Machine();

     int machineNumber = Machine.readInput();
     do
     {
        if (machineNumber == 1)    machineOne (machineNumber);
        else if (machineNumber == 2)    Machine machineTwo = new Machine();
        else if (machineNumber == 3)  System.exit(0);
        int machineNumber = Machine.readInput();
     }while (machineNumber > 0 && machineNumber < 4);


}

在这里你可以重复运行machineOne()

现在您可以从ticketInput()

返回
case 11: return;