Hi!
ich möchte ein programm erstellen (oop Bsp.1) mit einer "Pseudo-GUI", sprich einem textmenu. jetzt ist mein Problem, dass bei meinem programm nur einmal ein input eingelesen wird, dieser dann auch korrekt verarbeitet, aber im zweiten menu terminiert das ganze dann schon. also, um es genau zu zeigen, so schaut es aus:
Willkommen zu Ihrem Lagerverwaltungsprogramm!
Bitte treffen Sie Ihre Auswahl:
1. Lagerstand
2. Eingang
3. Ausgang
4. Exit
1
Bitte Art des Gerätes auswählen:
1. Festplatten
2. Gehäuse
3. Mainboards
4. DVD-Laufwerke
5. Zurück
bzw. so:
Willkommen zu Ihrem Lagerverwaltungsprogramm!
Bitte treffen Sie Ihre Auswahl:
1. Lagerstand
2. Eingang
3. Ausgang
4. Exit
12
Bitte Art des Gerätes auswählen:
1. Festplatten
2. Gehäuse
3. Mainboards
4. DVD-Laufwerke
5. Zurück
GEHÄUSELAGER
wäre für jegliche Hilfe IRRSINNIG dankbar, denn das bereitet mir schon starkes kopfzerbrechen. ich möchte doch nur, dass der auch nach einer eingabe noch weitere eingaben akzeptiert und nicht schon aufhört.
mfg philipp
Problem bei System.in.read()
-
-
Ich möchte den Vergleich mit der Glaskugel nicht schon wieder überstrapazieren. Aber vielleicht würde es helfen wenn du ein wenig Code posten könntest, hm?
-
ok, dachte mir es geht auch ohne code, aber wenn du willst:
publicclass Lager
{
publicstaticvoid main(String[] args)
{
int a=0;
System.out.println("Wilkommen zu Ihrem Lagerverwaltungsprogramm!");
System.out.println("Bitte treffen Sie Ihre Auswahl:");
System.out.println("1. Lagerstand");
System.out.println("2. Eingang");
System.out.println("3. Ausgang");
System.out.println("4. Exit");
try
{
a = System.in.read();
}
catch (java.io.IOException e)
{
System.out.println("Ihre Eingabe ist inkorrekt!");
}
switch (a)
{
case'1':Lagerstand();
break;
case'2':Eingang();
break;
case'3':Verkauf();
break;
case'4':break;
}
}
publicstaticvoid Lagerstand()
{
int a=0;
System.out.println("Bitte Art des Gerätes asuwählen:");
System.out.println("1. Festplatten");
System.out.println("2. Gehäuse");
System.out.println("3. Mainboards");
System.out.println("4. DVD-Laufwerke");
System.out.println("5. Zurück");
try
{
a = System.in.read();
}
catch (java.io.IOException e)
{
System.out.println("Ihre Eingabe ist inkorrekt!");
}
switch (a)
{
case'1':System.out.println("FESTPLATTENLAGER");
break;
case'2':System.out.println("GEHÄUSELAGER");
break;
case'3':System.out.println("MAINBORDLAGER");
break;
case'4':System.out.println("DVDLAGER");
break;
case'5':break;
}
} -
ok, dachte mir es geht auch ohne code, aber wenn du willst:
Code[b][size=10][color=#7f0055] public[/b][/color][/size][b][size=10][color=#7f0055]class[/b][/color][/size][size=10] Lager [/size][size=10]{[/size] [b][size=10][color=#7f0055]public[/b][/color][/size][b][size=10][color=#7f0055]static[/b][/color][/size][b][size=10][color=#7f0055]void[/b][/color][/size][size=10] main(String[] args)[/size][size=10]{[/size][b][size=10][color=#7f0055]int[/b][/color][/size][size=10] a=0;[/size][size=10]System.out.println([/size][size=10][color=#2a00ff]"Wilkommen zu Ihrem Lagerverwaltungsprogramm!"[/color][/size][size=10]);[/size][size=10]System.out.println([/size][size=10][color=#2a00ff]"Bitte treffen Sie Ihre Auswahl:"[/color][/size][size=10]);[/size][size=10]System.out.println([/size][size=10][color=#2a00ff]"1. Lagerstand"[/color][/size][size=10]);[/size][size=10]System.out.println([/size][size=10][color=#2a00ff]"2. Eingang"[/color][/size][size=10]);[/size][size=10]System.out.println([/size][size=10][color=#2a00ff]"3. Ausgang"[/color][/size][size=10]);[/size][size=10]System.out.println([/size][size=10][color=#2a00ff]"4. Exit"[/color][/size][size=10]);[/size] [b][size=10][color=#7f0055]try[/color][/size][/b][b][size=10][color=#7f0055][/b][/color][/size][size=10]{[/size][size=10]a = System.in.read();[/size][size=10]}[/size][b][size=10][color=#7f0055]catch[/b][/color][/size][size=10] (java.io.IOException e)[/size][size=10]{[/size][size=10]System.out.println([/size][size=10][color=#2a00ff]"Ihre Eingabe ist inkorrekt!"[/color][/size][size=10]);[/size][size=10]}[/size][b][size=10][color=#7f0055]switch[/b][/color][/size][size=10] (a)[/size][size=10]{[/size][b][size=10][color=#7f0055]case[/b][/color][/size][size=10][color=#2a00ff]'1'[/color][/size][size=10]:Lagerstand();[/size][b][size=10][color=#7f0055]break[/b][/color][/size][size=10];[/size][b][size=10][color=#7f0055]case[/b][/color][/size][size=10][color=#2a00ff]'2'[/color][/size][size=10]:Eingang();[/size][b][size=10][color=#7f0055]break[/b][/color][/size][size=10];[/size][b][size=10][color=#7f0055]case[/b][/color][/size][size=10][color=#2a00ff]'3'[/color][/size][size=10]:Verkauf();[/size][b][size=10][color=#7f0055]break[/b][/color][/size][size=10];[/size][b][size=10][color=#7f0055]case[/b][/color][/size][size=10][color=#2a00ff]'4'[/color][/size][size=10]:[/size][b][size=10][color=#7f0055]break[/b][/color][/size][size=10];[/size][size=10]}[/size] [size=10]}[/size] [b][size=10][color=#7f0055]public[/b][/color][/size][b][size=10][color=#7f0055]static[/b][/color][/size][b][size=10][color=#7f0055]void[/b][/color][/size][size=10] Lagerstand()[/size][size=10]{[/size] [b][size=10][color=#7f0055]int[/b][/color][/size][size=10] a=0;[/size] [size=10]System.out.println([/size][size=10][color=#2a00ff]"Bitte Art des Gerätes asuwählen:"[/color][/size][size=10]);[/size][size=10]System.out.println([/size][size=10][color=#2a00ff]"1. Festplatten"[/color][/size][size=10]);[/size][size=10]System.out.println([/size][size=10][color=#2a00ff]"2. Gehäuse"[/color][/size][size=10]);[/size][size=10]System.out.println([/size][size=10][color=#2a00ff]"3. Mainboards"[/color][/size][size=10]);[/size][size=10]System.out.println([/size][size=10][color=#2a00ff]"4. DVD-Laufwerke"[/color][/size][size=10]);[/size][size=10]System.out.println([/size][size=10][color=#2a00ff]"5. Zurück"[/color][/size][size=10]);[/size] [b][size=10][color=#7f0055]try[/color][/size][/b][b][size=10][color=#7f0055][/b][/color][/size][size=10]{[/size][size=10]a = System.in.read();[/size][size=10]}[/size][b][size=10][color=#7f0055]catch[/b][/color][/size][size=10] (java.io.IOException e)[/size][size=10]{[/size][size=10]System.out.println([/size][size=10][color=#2a00ff]"Ihre Eingabe ist inkorrekt!"[/color][/size][size=10]);[/size][size=10]}[/size][b][size=10][color=#7f0055]switch[/b][/color][/size][size=10] (a)[/size][size=10]{[/size][b][size=10][color=#7f0055]case[/b][/color][/size][size=10][color=#2a00ff]'1'[/color][/size][size=10]:System.out.println([/size][size=10][color=#2a00ff]"FESTPLATTENLAGER"[/color][/size][size=10]);[/size][b][size=10][color=#7f0055]break[/b][/color][/size][size=10];[/size][b][size=10][color=#7f0055]case[/b][/color][/size][size=10][color=#2a00ff]'2'[/color][/size][size=10]:System.out.println([/size][size=10][color=#2a00ff]"GEHÄUSELAGER"[/color][/size][size=10]);[/size][b][size=10][color=#7f0055]break[/b][/color][/size][size=10];[/size][b][size=10][color=#7f0055]case[/b][/color][/size][size=10][color=#2a00ff]'3'[/color][/size][size=10]:System.out.println([/size][size=10][color=#2a00ff]"MAINBORDLAGER"[/color][/size][size=10]);[/size][b][size=10][color=#7f0055]break[/b][/color][/size][size=10];[/size][b][size=10][color=#7f0055]case[/b][/color][/size][size=10][color=#2a00ff]'4'[/color][/size][size=10]:System.out.println([/size][size=10][color=#2a00ff]"DVDLAGER"[/color][/size][size=10]);[/size][b][size=10][color=#7f0055]break[/b][/color][/size][size=10];[/size][b][size=10][color=#7f0055]case[/b][/color][/size][size=10][color=#2a00ff]'5'[/color][/size][size=10]:[/size][b][size=10][color=#7f0055]break[/b][/color][/size][size=10];[/size][size=10]}[/size][size=10]}[/size]
hoffe, das reicht und mir kann bald jemand helfen, bin schön langsam am verzweifeln.
achja, die methoden Einkauf() und Verkauf() schauen Syntax-mäßig ähnlich aus, zumindest in Bezug auf die read() methode.
mfg philipp[/b][/color][/size] -
und bevor ich drauf vergess... wie mache ich das, dass ich von hier
Codecase[size=10][color=#2a00ff]'4'[/color][/size][size=10]:System.out.println([/size][size=10][color=#2a00ff]"DVDLAGER"[/color][/size][size=10]);[/size] [b][size=10][color=#7f0055]break[/b][/color][/size][size=10];[/size] [i][size=10][color=#7f0055]case[/color][/size][size=10][color=#2a00ff]'5'[/color][/size][size=10]:[/size][size=10][color=#7f0055]break[/color][/size][size=10]; <---[/size] [/i][size=10]}[/size] [size=10]}[/size]
wieder ins hauptmenu komme? einfach nur main() funzt nicht so richtig.
ich weiss, das sind alles wahrscheinlich ziemliche "beginners-questions", aber ich hab seit eineinhalb jahren nichts mehr programmiert und bin java-mäßig nicht so gut drauf.
mfg philipp -
Zitat von Paladin_FRW
und bevor ich drauf vergess... wie mache ich das, dass ich von hier
wieder ins hauptmenu komme? einfach nur main() funzt nicht so richtig.
ich wird das ganze in ner While Schleife reinhauen die halt immer überprüft ob eine boolean Variable geäendert wird
Code
Alles anzeigenboolean setzefort = true; while (setzefort) { System.out.println (....); // einlesen von System.in // wenn eingabe == definiertes Exit-Zeichen // dann setzefort = false; }
ist eleganter als immer wieder die main() aufzurufen
-
ok, dass sollte funktionieren, aber das wichtigere problem wäre für mich im moment, die System.in.read() methode richtig verwenden zu können. ich hoffe, mir kann da recht bald jemand helfen, bedanke mich aber trotzdem für den tip zum anderen problem.
mfg philipp -
mit String gehts irgendwie angenehmer als mit chars
Java
Alles anzeigenimport java.io.*; ... try{ BufferedReader br = new BufferedReader (new InputStreamReader (System.in)); String eingabe = br.readLine(); if (eingabe.equals("raus")) // beenden } catch (IOException pfui) { System.err.println (pfui); }
-
ok, das werd ich heut nimma probieren, hab das ganze jetzt etwas "objektorientierter" gemacht, nämlich in der main nur mehr einen konstruktor der eine class Menu aufruft und eine neue instanz menu macht, irgendwie krieg ich da aber einen StackOverflowError. hier der neue code, respektive die änderungen an dem alten, der da schon im forum steht:
publicclass Lager
{
public Lager()
{
Menu menu = new Menu();
}
staticpublicvoid main (String[] args)
{
new Lager();
}
}
publicclass Menu extends Lager
{
publicstaticvoid Hauptmenu()
{
int a=0;
System.out.println("Wilkommen zu Ihrem Lagerverwaltungsprogramm!");
System.out.println("Bitte treffen Sie Ihre Auswahl:");
System.out.println("1. Lagerstand");
System.out.println("2. Eingang");
System.out.println("3. Ausgang");
System.out.println("4. Exit");
.....
ab da geht es so weiter wie oben. ich nehme an, dass das auch ein newbie fehler ist, aber ich hoffe ihr könnts mir trotzdem helfen, die objektorientiertheit liegt mir gerade hier eigentlich schon sehr am herzen.
mfg philipp
p.s.: jetzt werf ich mich auf algodat, also haben alle leute die das hier lesen bis morgen 10:00 zeit, hilfreiche tips zu geben. (dann ist statistik aus und ich programmier wieder!)
viel spass beim tüfteln, mein kopf raucht schon! -
ok, das werd ich heut nimma probieren, hab das ganze jetzt etwas "objektorientierter" gemacht, nämlich in der main nur mehr einen konstruktor der eine class Menu aufruft und eine neue instanz menu macht, irgendwie krieg ich da aber einen StackOverflowError. hier der neue code, respektive die änderungen an dem alten, der da schon im forum steht:
Code[b][size=10][color=#7f0055] public[/b][/color][/size][b][size=10][color=#7f0055]class[/b][/color][/size][size=10] Lager[/size][size=10]{[/size] [b][size=10][color=#7f0055]public[/b][/color][/size][size=10] Lager()[/size][size=10]{[/size][size=10]Menu menu = [/size][b][size=10][color=#7f0055]new[/b][/color][/size][size=10] Menu(); [/size][size=10]}[/size][b][size=10][color=#7f0055]static[/b][/color][/size][b][size=10][color=#7f0055]public[/b][/color][/size][b][size=10][color=#7f0055]void[/b][/color][/size][size=10] main (String[] args)[/size][size=10]{[/size][b][size=10][color=#7f0055]new[/b][/color][/size][size=10] Lager();[/size][size=10]}[/size][size=10]}[/size] [size=10][b][size=10][color=#7f0055]public[/b][/color][/size][b][size=10][color=#7f0055]class[/b][/color][/size][size=10] Menu [/size][b][size=10][color=#7f0055]extends[/b][/color][/size][size=10] Lager[/size][size=10]{[/size][b][size=10][color=#7f0055]public[/b][/color][/size][b][size=10][color=#7f0055]static[/b][/color][/size][b][size=10][color=#7f0055]void[/b][/color][/size][size=10] Hauptmenu()[/size][size=10]{[/size][b][size=10][color=#7f0055]int[/b][/color][/size][size=10] a=0;[/size][size=10]System.out.println([/size][size=10][color=#2a00ff]"Wilkommen zu Ihrem Lagerverwaltungsprogramm!"[/color][/size][size=10]);[/size][size=10]System.out.println([/size][size=10][color=#2a00ff]"Bitte treffen Sie Ihre Auswahl:"[/color][/size][size=10]);[/size][size=10]System.out.println([/size][size=10][color=#2a00ff]"1. Lagerstand"[/color][/size][size=10]);[/size][size=10]System.out.println([/size][size=10][color=#2a00ff]"2. Eingang"[/color][/size][size=10]);[/size][size=10]System.out.println([/size][size=10][color=#2a00ff]"3. Ausgang"[/color][/size][size=10]);[/size][size=10]System.out.println([/size][size=10][color=#2a00ff]"4. Exit"[/color][/size][size=10]);[/size].....[/size]
[/b][/color][/size]
ab da geht es so weiter wie oben. ich nehme an, dass das auch ein newbie fehler ist, aber ich hoffe ihr könnts mir trotzdem helfen, die objektorientiertheit liegt mir gerade hier eigentlich schon sehr am herzen.
mfg philipp
p.s.: jetzt werf ich mich auf algodat, also haben alle leute die das hier lesen bis morgen 10:00 zeit, hilfreiche tips zu geben. (dann ist statistik aus und ich programmier wieder!)
viel spass beim tüfteln, mein kopf raucht schon! -
das prob is das du im konstruktor von lager ein neues menu objekt erstellt.
im menu objekt konstruktor (wird erstellt wenn du keinen Konstruktor angibst)
wird aber super() aufgerufen also wieder der konstruktor von lager usw.außerdem was hat ein menü mit dem lager zu tun?
Ich würd das Menü als extra klasse anlegen das funktionen von einem lager objekt verwendet. Oder du erstellst ein interface mit ner funktion showMenu()oder so + lässt lager das interface inkludieren. so können auch weiter klassen ein menü haben, du hast aber keine vererbung, also eine weniger starke bindung.
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!