java - 如何管理用户输入字母而不是数字?

标签 java exception

我正在尝试编写一个自动售货机程序,除了告诉它如何处理用户输入字母而不是数字之外,它还做得很好。这是我试图弄清楚的代码块:

System.out.print("Please enter how much money you have to spend (enter -1 to shut down): ");
        double custMoney = scanner.nextDouble();
        if (custMoney <= 0) {
            System.out.println("Thank you for your business!");
            System.exit(0);
        }

如果用户输入字母而不是数字,它会给我

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextDouble(Unknown Source)
at VendingMachine1.main(VendingMachine1.java:28)

如何解决此问题,以便在他们输入字母时提示他们输入有效的数字?

最佳答案

正如@Max所说,您应该将输入读取为字符串,并在它不是数字时提醒用户,我添加了 while(!numberOk) ,这样如果用户输入字母而不是数字(或无效数字),它会继续询问;)

希望这对您有帮助

   String custMoney = scanner.next();
    double custMoneyValue;
    boolean numberOk=false;
    while(!numberOk)
    try {
        custMoneyValue = Double.parseDouble(custMoney);
        if (custMoneyValue <= 0) {
            System.out.println("Thank you for your business!");
            numberOk=true;
            System.exit(0); // would make the while loop condition useless...

        }
    }catch (NumberFormatException e) {
            System.out.println("Please insert a number...");
            custMoney = scanner.next();
    }

关于java - 如何管理用户输入字母而不是数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28664928/

相关文章:

java - JAVA中发送ctrl+c关闭ping请求

java - Spring Security,始终重定向到登录页面

java - 当用户按 'q' 然后按 'ENTER' 时程序运行时退出

c# - aspx中如何获取哪个页面抛出Application_error异常

java - 如何打印我的 Java 对象而不得到 "SomeType@2f92e0f4"?

java - 使用 Hibernate 对多个属性进行动态查询

java - 如何将一个 Action 监听器分配给几个按钮?

python - django 异常处理程序中间件和 handler500

java - Java 中的 MATLAB 函数导致运行时错误 (EXCEPTION_ACCESS_VIOLATION)

java - 当实现违反其接口(interface)契约时抛出什么异常?