Schlagwörter

,

Um mit der Programmiersprache Java einfache Eingaben verarbeiten zu können, ist häufig mehr Aufwand notwendig als bei anderen Programmiersprachen. Dies liegt daran, dass man bei Java immer berücksichtigen soll, was bspw. der Benutzer falsch gemacht haben könnte (Tippfehler usw.) oder was beim Datenaustausch mit einem anderen System (Festplatte, Netzwerk,…) an Fehlern aufgetreten ist.

Der folgende Quellcode stellt ein einfaches Beispiel dafür dar, wie man korrekt Zahlen (aus dem Zahlenraum des Integers) einlesen kann:

import javax.swing.JOptionPane;

/**
 * Diese Klasse liest eine ganze Zahl ein.
 * Hierzu wird solange ein Eingabefeld angezeigt, bis der Benutzer<ul>
 * <li>entweder eine Zeichenkette eingibt, die eine Ziffernfolge darstellt, die mit dem Datentyp <em>int</em> kompatibel ist</li>
 * <li>oder den Button <em>Abbruch</em> drückt.</li></ul>
 *
 * @author Thomas Nawrath (November 2012)
 */
public class Start {

	enum Eingabe
        // alle möglichen Dialogergebnisse durch Enum erfassen
	{
		eingabeOK, eingabeAbbruch, eingabeFalsch
	}

	public static void main(String[] args) {
		int myNumber = 0; // diese Zahl wollen wir einlesen

		Eingabe eingabeErgebnis = Eingabe.eingabeFalsch;
			// Bislang gab es keine korrekte Eingabe,
			// also nehmen wir eingabeFalsch an.

		while (eingabeErgebnis == Eingabe.eingabeFalsch) {
			String eingabe =
				JOptionPane.showInputDialog("Bitte ganze Zahl eingeben:");
				// hier wird eine Eingabe eingelesen
			if (eingabe == null) // Abbruch wurde gedrückt
				eingabeErgebnis = Eingabe.eingabeAbbruch;
			else
				try {
					myNumber = Integer.parseInt(eingabe);
					// String versuchen in Zahl umzuwandeln
					eingabeErgebnis = Eingabe.eingabeOK;
					// wenn es geklappt hat, dann ok
					// sonst landet man im catch-Block
				} catch (NumberFormatException e) {
					JOptionPane.
					showMessageDialog(null,"Eingabe war keine ganze Zahl. Bitte noch einmal");
					// Erklärung, dass es zur erneuten Eingabeaufforderung kommt
				}
		}
		if (eingabeErgebnis == Eingabe.eingabeAbbruch)
			JOptionPane.
			showMessageDialog(null, "Eingabe wurde abgebrochen");
		else
			JOptionPane.
			showMessageDialog(null, "Eingabe war: " + myNumber);
		/*
		 * Bei showMessageDialog bedeutet der Parameter null,
		 * dass der Dialog als eigenes Fenster ausgegeben werden soll.
		 * Man könnte ihn auch in ein anderes Fenster einbetten;
		 * das würde dann dort stehen.
		 */
	}

}
Advertisements