当前位置: 首页 > 知识库问答 >
问题:

如何修复用户输入错误时,一个非数字输入在. nextDouble?

卫才
2023-03-14

所以我把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 + ".");
    }
}

所以我已经尝试了你展示的尝试/捕捉。但我还是遇到了非数字的例外。输入代码如下:

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;
        }

共有1个答案

干浩阔
2023-03-14

import java.util.InputMatchException;

进口java.util.Scanner;

公共类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 + ".");
}

}

 类似资料: