java - 在 .nextDouble 中输入非数字时如何修复用户输入错误?

标签 java java.util.scanner

所以我将 Java 作为数学学位要求的一部分,并且偶然发现了这段代码的问题。本质上,代码应该从用户那里获取数字,直到他们输入零。只要输入数字就可以正常工作。但是,如果用户输入字母或符号,程序就会出现异常。有没有一种简单的方法可以将用户输入验证为数字而不会出现异常?

import java.util.Scanner;

public class SamsAdder
{
    public static void main(String[] args)
    {

        double userInput = 1; 
        double sum = 0;

        Scanner in = new Scanner (System.in);

        while(userInput != 0)
        {
            System.out.println("Enter a number. (0 to quit):");
            userInput = in.nextDouble();
            sum = sum + userInput;
        }

        System.out.println("The sum of the numbers is " + sum + ".");
    }
}

所以我已经尝试了你展示的 try/catch 。不过,我仍然遇到非数字的异常。输入代码如下:

while(userInput != 0)
        {
            System.out.println("Enter a number. (0 to quit):");
            try{
                userInput = in.nextDouble();
            }
            catch(NumberFormatException nfe){
                System.out.println("Invalid Number");
            }
            sum = sum + userInput;
        }

最佳答案

导入java.util.InputMismatchException;

导入java.util.Scanner;

公共(public)类 SamsAdder {

public static void main(String[] args) {

    double userInput = 1;
    double sum = 0;

    Scanner in = new Scanner(System.in);

    while (userInput != 0) {

        try {

            System.out.println("Enter a number. (0 to quit):");
            userInput = in.nextDouble();

            sum = sum + userInput;
        } catch (InputMismatchException nfe) {
            System.out.println("Invalid Number");
            in.next();
        }

    }
    in.close();
    System.out.println("The sum of the numbers is " + sum + ".");
}

}

关于java - 在 .nextDouble 中输入非数字时如何修复用户输入错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33684262/

相关文章:

java - Volley 补丁错误

java - 如何共享 2 上下文的属性占位符

java - 将 DLL 与 JNA 一起使用时 C 中的堆损坏

java - 为什么我的扫描仪要求输入两次?

java - 始终重新初始化 PrintWriter 而不关闭是个好主意吗?

java - 在不打开应用程序的情况下使用通知操作更改 TextView 的文本

java - MVVM MediatorLiveData观察者onchanged被调用多次

java - Scanner nextInt() 不返回字符串中的所有整数?

java - 如何正确输入带撇号的单词?像 "wouldn' t"和 "couldn' t"这样的词被放入 ArrayList 中作为 "wouldn"和 "couldn"

java - scanner.hasNext() 导致无限循环