go to previous page   go to home page   go to next page hear noise highlighting

What do you suppose happens int this program if the user types in an integer value, like 211?

Answer:

scan.nextDouble() converts the characters into a double. You don't have to supply a decimal point.

scan.nextDouble() converts 211 and 211.0 and 211.00 and 0211.0 into the same 64-bit double.

But recall that the other direction does not work: scan.nextInt() will throw an Exception if it encounters a decimal point.


Exceptions

The input characters are converted into a double, if that is possible, even if the input characters lack a decimal point.

If the input characters can NOT be converted into a double, then Java throws an exception and the program halts. (A later chapter will discuss how to deal with exceptions.) For example:


C:\temp>java DoubleDouble
Enter a double: rats
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 DoubleDouble.main(DoubleDouble.java:14)

The input might start with characters that can be converted, followed by one or more spaces and perhaps additional characters. If that happens, nextDouble() scans in only the characters that can be converted.

C:\temp>java DoubleDouble
Enter a double: 3.14 and more characters
value: 3.14 twice value: 6.28

If the program had another call to nextDouble() it would start where the previous call stopped and would find characters that can't be converted, and would throw an exception.



QUESTION 4:

Will the following input work with the above program?

C:\temp>java DoubleDouble
Enter a double: -97.65

go to previous page   go to home page   go to next page