java - 扫描仪类别验证

标签 java validation menu

我的代码有点困难。存入30美元后,应该会带回储蓄菜单 A-存款 B - 撤回 C-报告 D-返回主菜单

不知何故,它不断扫描 30 美元,而不是要求新的输入。

感谢任何愿意帮助我的人。

package Menu;

import java.util.Scanner;

enum Options {
    A, B, C, D
}

public class Menu {
    public Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {
        Menu menu = new Menu();
        menu.mainMenu();
    }

    public void mainMenu() {
        String userChoice;
        boolean quit = false;

        do {
            System.out.println("Bank Menu" + "\nA: Savings" + "\nB: Checking"
                    + "\nC: Exit");

            userChoice = sc.next().toUpperCase();

            switch (userChoice) {
            case "A":
                savingMenu savMen = new savingMenu();
                break;
            case "B":
                break;
            case "C":
                quit = true;
                break;
            default:
                System.out.println("Wrong entry.");
                break;
            }
            System.out.println();

        } while (!quit);
        sc.close();
        System.exit(0);
    }
}

package Menu;

import Savings.Savings;

public class savingMenu extends Menu {
    Savings sav = new Savings();

    public savingMenu() {
        String userChoice;
        boolean quit = false;

        /**
         * A - Deposit B - Withdraw C - Report D - Return Menu
         */
        do {
            System.out.println("Savings Menu" + "\nA: Deposit "
                    + "\nB: Withdraw" + "\nC: Report"
                    + "\nD: Return to Bank Menu");

            userChoice = sc.nextLine().toUpperCase();
            switch (userChoice) {
            case "A":
                sav.makeDeposit();              
                break;
            case "B":
                sav.makeWithdraw();
                break;
            case "C":
                sav.doMonthlyReport();
            case "D":
                quit = true;
                super.mainMenu();
            default:
                System.out.println("Wrong choice.");
                break;
            }
            System.out.println();

        } while (!quit);
    }
}

最佳答案

使用扫描仪检查是否有下一行 hasNextLine()

关于java - 扫描仪类别验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38703329/

相关文章:

redux 中的 reducer 中的验证

java - 如何从 arrayList 中删除一项

java - java中顺序运行线程

java - Spring Hibernate 的 Google Appengine Cloud SQL 问题

java - 基于列表的 if 语句不起作用 - Java

java - 当 WebView 中加载特定 URL 时隐藏菜单项

Laravel Eloquent date_format 给定格式验证失败

validation - 如何在 h :inputText with JSF 上阻止负数

macos - cocoa 滚动图像菜单

symfony - 如何在 symfony2 中通过 KnpMenu 创建树项目菜单