我正在尝试制作“银行帐户”,并要求用户输入该银行帐户的名称,密码,余额和利息。我使用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();
}
为了澄清,问题是我第一次进入“退出”时,在循环开始之前,它运行良好并且循环不会开始。但是,当我输入一个银行账户时,它再次进入“输入名称”,当我输入退出时,循环不会停止。
答案 0 :(得分:2)
我认为nextDouble()
方法无法读取下一个新行字符。查看有关此文档的文档。
您可以在致电nextLine()
后尝试致电nextDouble()
。
您可以查看扫描仪here的来源。如果您因为蹩脚的javadoc或无证的副作用而陷入困境,我认为最好检查代码。
它似乎正在使用只匹配 double 模式的正则表达式匹配器。