Java Notes
Example: Kilometers to Miles - Try-Catch
This program asks the user for a number of miles and converts it to kilometers, like other examples. This adds two features to the plain version.
- try-catch. The try-catch statement is used to detect numeric conversion errors.
- Loop with break. The outer loop looks "infinite" (
while (true)), but is terminated by a break if there is no input.
Source code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
// File : examples/dialog/KmToMilesTryCatch.java
// Description: Converts kilometers to miles.
// Illustrates: Use of try-catch for NumberFormatException.
// Loop which exits with a break.
// Be sure comment on break attracts attention.
// Author : Fred Swartz - 2007-01-19 - Placed in public domain.
import javax.swing.*;
public class KmToMilesTryCatch {
//==================================================================== constants
static final double MILES_PER_KILOMETER = 0.621;
//========================================================================= main
public static void main(String[] args) {
while (true) {
try { //Note 1
//... Input
String kmStr = JOptionPane.showInputDialog(null, "Enter kilometers.");
if (kmStr == null || kmStr.equals("")) {
break; // Exit from loop. >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
}
double kilometers = Double.parseDouble(kmStr); //Note 2
//... Computation
double miles = kilometers * MILES_PER_KILOMETER;
//... Output
JOptionPane.showMessageDialog(null, kilometers + " kilometers is "
+ miles + " miles.");
} catch (NumberFormatException nfe) { //Note 3
JOptionPane.showMessageDialog(null, "Input must be a number.");
}
}
}
}
|
Notes
- The code in the try clause executes normally. If an exception is thrown in the try clause, execution continues immediately in the catch clause.
- parseDouble can throw a NumberFormatException.
- This only catches NumberFormatExceptions.