Java - 虽然循环不起作用 - Bug

时间:2014-03-30 23:56:23

标签: java while-loop

我正在尝试制作“银行帐户”,并要求用户输入该银行帐户的名称,密码,余额和利息。我使用sentinel控制的while循环来实现这一点,但我的哨兵由于某种原因不起作用。这是我的代码的一部分,如果你可以帮助我那将是伟大的:

    System.out.println("New Account: Enter name, type \"quit\" to exit. ");
    String name = scan.nextLine();
    while (!name.equals("quit")) {
        System.out.println("Enter password: ");
        String pass = scan.nextLine();
        System.out.println("Enter balance (in pennies): ");
        double bal = scan.nextDouble();
        System.out.println("Enter interest: ");
        double inter = scan.nextDouble();

        BankAccount2 bankacc = new BankAccount2(name, pass, bal, inter);
        accounts.add(bankacc);
        System.out.println("Successful account creation! New Account: Enter name, type        \"quit\" to exit. ");
        name = scan.nextLine();
    }

为了澄清,问题是我第一次进入“退出”时,在循环开始之前,它运行良好并且循环不会开始。但是,当我输入一个银行账户时,它再次进入“输入名称”,当我输入退出时,循环不会停止。

1 个答案:

答案 0 :(得分:2)

我认为nextDouble()方法无法读取下一个新行字符。查看有关此文档的文档。

您可以在致电nextLine()后尝试致电nextDouble()

您可以查看扫描仪here的来源。如果您因为蹩脚的javadoc或无证的副作用而陷入困境,我认为最好检查代码。

它似乎正在使用只匹配 double 模式的正则表达式匹配器。