使用scanner.nextLine();对于输入验证,在第一个无效输入上输出两次错误消息

时间:2018-04-03 07:47:35

标签: java validation java.util.scanner

System.out.println("_______________");
System.out.println("Enter your deposit amount: ");
System.out.println("_______________");
while (!scnr.hasNextDouble()) {
    System.out.println("_______________"); 
    System.out.println("Error: Invalid input. Please try again. 4");
    System.out.println("_______________"); 
    scnr.nextLine();
}
double deposit = scnr.nextDouble();
balance = deposit + balance;
System.out.println("_______________"); 
System.out.printf("Your current balance is $%.2f %n", balance);

我想循环该错误消息,直到用户输入一个double。但是,当您收到第一个无效输入时,它会输出错误消息两次。任何后续无效输入仅打印错误消息一次。我设法通过将scnr.nextLine();转换为scnr.next();来解决此问题。

任何人都可以向我解释为什么有效但第一个没有?为什么scnr​​.nextLine();只能第一次打印两次?

我想使用nextLine,因为我不希望输入“g g g g”打印四次,就像下次打印一样。但是,如果在输入无效之前输入几次,则nextLine会为每个空字符串输出一次错误消息。有没有办法解决这个问题?

这是一个简单的ATM模拟器,我需要在两个月前做一个介绍性的Java类。

0 个答案:

没有答案
相关问题