Samuel S
Samuel S

Reputation: 1

How to fix user input error when a non number is entered in .nextDouble?

So I am taking Java as part of math degree requirements and have stumbled on a problem with this code. Essentially the code is supposed to take in numbers from the user until they type a zero. It works fine as long as only numbers are entered. However if the user enters a letter or symbol the program gets an exception. Is there a simple way I can validate user input as a number without getting an exception?

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

So I've tried the try/catch as you showed it. I'm still getting an exception with non numbers though. Entered the code as follows:

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

Upvotes: 0

Views: 160

Answers (1)

SSD
SSD

Reputation: 369

import java.util.InputMismatchException;

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) {

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

}

Upvotes: 1

Related Questions