Hallo!
Ich habe als Übung ein Programm geschrieben, dass mit einer Funktion eine Zahl liest. Je nachdem welche Zahl eingegeben wird, verwendet das Programm eine andere Funktion. Also die Ausgabe á la:
Je nach Eingabe wird der User aufgefordert den neuen Namen oder den neuen Geburtstag einzugeben.
Wenn ich Eintrag eins wähle funktioniert das tadellos. Wähle ich den ersten Eintrag, liest er nicht nach der Ausgabe der zweiten Aufforderung weiter, sondern in der Zeile nach der Menüauswahl weiter. (Gebe ich also z.B. statt 1, 1 Hans ein, liest er die 1 macht dann die Ausgabe zur Namensänderung und wartet dann nicht mehr auf die Eingabe des Users sondern gibt sofort Hans zurück. Gebe ich nach der 1 nichts mehr ein wartet er auch nicht auf die Einhgabe und gibt einen leeren String zurück.)
Die Funktionen selber funktionieren eigentständig sehr gut es happert nur an der Reihenfolge Zahl einlesen (egal welches Format) und danach Zeile einlesen.
Unten die Funktionen:
Ich habe als Übung ein Programm geschrieben, dass mit einer Funktion eine Zahl liest. Je nachdem welche Zahl eingegeben wird, verwendet das Programm eine andere Funktion. Also die Ausgabe á la:
Code:
Menü:
Namen ändern: 1
Geburtstag ändern: 2
Geben Sie die jeweilige Zahl für die Änderung ein: ...
Je nach Eingabe wird der User aufgefordert den neuen Namen oder den neuen Geburtstag einzugeben.
Wenn ich Eintrag eins wähle funktioniert das tadellos. Wähle ich den ersten Eintrag, liest er nicht nach der Ausgabe der zweiten Aufforderung weiter, sondern in der Zeile nach der Menüauswahl weiter. (Gebe ich also z.B. statt 1, 1 Hans ein, liest er die 1 macht dann die Ausgabe zur Namensänderung und wartet dann nicht mehr auf die Eingabe des Users sondern gibt sofort Hans zurück. Gebe ich nach der 1 nichts mehr ein wartet er auch nicht auf die Einhgabe und gibt einen leeren String zurück.)
Die Funktionen selber funktionieren eigentständig sehr gut es happert nur an der Reihenfolge Zahl einlesen (egal welches Format) und danach Zeile einlesen.
Unten die Funktionen:
Code:
static String readDigits() {
StringBuffer b = new StringBuffer();
char c = charAfterWhiteSpace();
if (done && c == '-') {
b.append(c);
c = read();
}
while (done && Character.isDigit(c)) {
b.append(c);
c = read();
}
buf = c;
return b.toString();
}
Code:
static int readInt() {
String s = readDigits();
try {
done = true;
return Integer.parseInt(s);
} catch (Exception e) {
done = false; return 0;
}
}
Code:
static String readLine() {
StringBuffer b = new StringBuffer();
char c = read();
while (done && c != eol) {
b.append(c);
c = read();
}
if (OS == Windows && c == eol) c = read(); // read also LF
buf = empty;
if (b.length() > 0) done = true;
return b.toString();
}