无法在 java 中重复 switch 语句

Cant repeat switch statement in java

我正在 java 中为我的计算机科学 class 开发一个简单的银行应用程序,但我无法重复 switch 语句。这是我的开关语句。谢谢!

//Menu
System.out.println("W. Withdraw");
System.out.println("D. Deposit");
System.out.println("B. View Balance");
System.out.println("To exit program, type Quit");

Scanner keyboardMenu = new Scanner(System.in);
menuOptions = keyboardMenu.next();

//Switch statement to navigate menu options
switch (menuOptions) {
    case "B": 
        System.out.println("Your balance is $" + balance);
        break;
    case "D":
        System.out.println("Deposit: ");
        Scanner keyboardDeposit = new Scanner(System.in);
        double deposit = keyboardDeposit.nextDouble();
        balance = balance + deposit;
        System.out.println("Your new balance is $" + balance);
        break;
    case "W":
        System.out.println("Withdraw: ");
        Scanner keyboardWithdraw = new Scanner(System.in);
        double withdraw = keyboardWithdraw.nextDouble();
        balance = balance - withdraw;
        System.out.println("Your new balance is $" + balance);
        break;
    case "Quit":
        System.out.println("Program terminated.");
        break;
    default:
        System.out.println("Please select an option.");
        break;
    } 
}

在没有更多上下文的情况下,我将假设您正在尝试做这样的事情:

do{
    System.out.println("W. Withdraw");
    System.out.println("D. Deposit");
    System.out.println("B. View Balance");
    System.out.println("To exit program, type Quit");
    Scanner keyboardMenu = new Scanner(System.in);
    menuOptions = keyboardMenu.next();
    boolean keepGoing = true; 
   //Switch statement to navigate menu options
   switch (menuOptions) {
case "B": 
       System.out.println("Your balance is $" + balance);
       break;
case "D":
       System.out.println("Deposit: ");
       Scanner keyboardDeposit = new Scanner(System.in);
    double deposit = keyboardDeposit.nextDouble();
    balance = balance + deposit;
    System.out.println("Your new balance is $" + balance);
    break;
case "W":
    System.out.println("Withdraw: ");
    Scanner keyboardWithdraw = new Scanner(System.in);
    double withdraw = keyboardWithdraw.nextDouble();
    balance = balance - withdraw;
    System.out.println("Your new balance is $" + balance);
    break;
case "Quit":
    System.out.println("Program terminated.");
    keepGoing = false; 
    break;
default:
    System.out.println("Please select an option.");
    break;
}while(keepGoing)

我会将 Quit 子句从开关中拉出,然后将您的其他函数包装在 While 循环中。类似于:

//Switch statement to navigate menu options
while (menuOptions != "Quit") {
    switch (menuOptions) {
        case "B": 
            System.out.println("Your balance is $" + balance);
            break;
        case "D":
            System.out.println("Deposit: ");
            double deposit = keyboardDeposit.nextDouble();
            balance = balance + deposit;
            System.out.println("Your new balance is $" + balance);
            break;
        case "W":
            System.out.println("Withdraw: ");
            double withdraw = keyboardWithdraw.nextDouble();
            balance = balance - withdraw;
            System.out.println("Your new balance is $" + balance);
            break;
        default:
            System.out.println("Please select an option.");
            break;
    } 
    menuOptions = keyboardMenu.next();
}
System.out.println("Program terminated.");

因此,每次当您进入开关时,您都可以确定他们没有键入退出。然后,在一天结束时,当他们输入 Quit 时,您进入了 Program Terminated 行。

我还会将您的 new Scanner 放在 Switch 语句之后。这样你只需要调用一次......在你完成你的决策树之后。