## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

No credit card required

# Checking Whether a String Is a Valid Number

## Problem

You need to check if a given string contains a valid number, and if so, convert it to binary (internal) form.

## Solution

Use the appropriate wrapper class’s conversion routine and catch the `NumberFormat` `Exception`. This code converts a string to a `double` :

```// StringToDouble.java
public static void main(String argv[]) {
String aNumber = argv[0];    // not argv[1]
double result;
try {
result = Double.parseDouble(aNumber);
} catch(NumberFormatException exc) {
System.out.println("Invalid number " + aNumber);
return;
}
System.out.println("Number is " + result);
}```

## Discussion

Of course, that lets you validate only numbers in the format that the designers of the wrapper classes expected. If you need to accept a different definition of numbers, you could use regular expressions (see Chapter 4) to make the determination.

There may also be times when you want to tell if a given number is an integer number or a floating-point number. One way is to check for the characters `.`, `d`, or `e` in the input; if it is present, convert the number as a `double`, otherwise, convert it as an `int`:

`// GetNumber.java System.out.println("Input is " + s); if (s.indexOf('.') >0 || s.indexOf('d') >0 || s.indexOf('e') >0) try { dvalue = Double.parseDouble(s); System.out.println("It's a double: " + dvalue); return; } catch (NumberFormatException e) { System.out.println("Invalid a double: " + s); return; } else // did not contain . or d or e, so try as int. try { ivalue ...`

## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

No credit card required