Hey leute,
ich habe eine Eingabeaufforderung für eine Zahl, die vom typ long ist. Wenn ich jetzt beim Testen 2.5 oder sonstiges eingebe, dann ist es falsch und die NumberFormatException wird geworfen. Ich versteh nicht ganz warum ???:L
Vielen Dank schonmal im voraus
ich habe eine Eingabeaufforderung für eine Zahl, die vom typ long ist. Wenn ich jetzt beim Testen 2.5 oder sonstiges eingebe, dann ist es falsch und die NumberFormatException wird geworfen. Ich versteh nicht ganz warum ???:L
Java:
package de.dpma.datamodel;
import java.text.MessageFormat;
import java.util.Scanner;
import de.dpma.exceptions.WrongVariableValueException;
/**
* Diese Klasse ist für die Eingaben des Benutzers zuständig.
*/
public class UserInput {
/**
* Diese Methode fragt den Benutzer nach 2 Attributen und fügt diese dann in
* einen vorgefertigten Text ein.
*
* @throws WrongVariableValueException
*/
public void askData() throws WrongVariableValueException {
Scanner sc = new Scanner(System.in);
long betrag = 0;
char[] illegalChars = { '1', '2', '3', '4', '5', '6', '7', '8', '9',
'0' };
System.out.println("Bitte geben Sie einen Namen ein(Nachname).");
String lastName = sc.next();
for (char c : illegalChars) {
if (lastName.indexOf((int) c) != -1) {
System.out
.println("Sie haben ungültige Ziffern im Namen eingegeben: ");
System.out
.println("Ungültige Ziffern: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9\n");
askData();
}
}
try {
System.out.println("Bitte geben Sie einen Betrag ein.");
betrag = Long.parseLong(sc.next());
if (betrag < 0) {
throw new WrongVariableValueException("Der Betrag ist negativ.");
}
} catch (IllegalArgumentException e) {
System.out.println("Bitte korrekten Wert von \"Betrag\" eingeben.");
betrag = Long.parseLong(sc.next());
}
String part1 = "Der/Die Mitarbeiter/in ";
String part2 = "hat heute für";
String part3 = "€ Büromaterial eingekauft";
String result = MessageFormat.format(
"{1}{2} {3} {0,number, integer}{4}.", betrag, part1, lastName,
part2, part3);
System.out.println(result);
}
}
Vielen Dank schonmal im voraus