Wie kann ich bestimmen, dass eine Eingabe nur numerisch sein darf?

In Java kann eine Eingabe überprüft werden, indem man versucht, den eingegebenen String mit Double.parseDouble() oder Integer.parseInt() in eine Zahl umzuwandeln. Wenn der String keinen numerischen Wert beschreibt, wird eine IllegalArgumentException ausgelöst. In diesem Fall kann eine Fehlermeldung angezeigt werden.

Im folgenden Beispiel wird der Eingabedialog wiederholt, falls die Eingabe nicht numerisch war.

Scanner sc = new Scanner(System.in);
double d;
while (true) {
    try {
        System.out.print("Gib Zahl > ");
        String s = sc.next();
        d = Double.parseDouble(s);
        break;
    } catch (NumberFormatException e) {
        System.out.println("FEHLER: Die Eingabe muss eine Zahl sein.");
    }
}
System.out.println("Du hast den numerischen Wert " + d + " eingegeben.");
sc.close();

Ausgabe:

Gib Zahl > hallo
FEHLER: Die Eingabe muss eine Zahl sein.
Gib Zahl > 1,2
FEHLER: Die Eingabe muss eine Zahl sein.
Gib Zahl > 3.14
Du hast den numerischen Wert 3.14 eingegeben.