Problem bei System.in.read()

  • 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

    Philipp function beer no well without!
    -----------------------------------
    I was elected to LEAD, not to READ!

  • 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;
    }
    }

    Philipp function beer no well without!
    -----------------------------------
    I was elected to LEAD, not to READ!

  • 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]

    Philipp function beer no well without!
    -----------------------------------
    I was elected to LEAD, not to READ!

  • und bevor ich drauf vergess... wie mache ich das, dass ich von hier

    Code
    case[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

    Philipp function beer no well without!
    -----------------------------------
    I was elected to LEAD, not to READ!

  • 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

    ist eleganter als immer wieder die main() aufzurufen

    Der beste Beweis, dass ausserirdische Intelligenz existiert, ist der dass bis jetzt noch keiner Kontakt zu uns aufgenommen hat

  • 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

    Philipp function beer no well without!
    -----------------------------------
    I was elected to LEAD, not to READ!

  • mit String gehts irgendwie angenehmer als mit chars


    :)

    Der beste Beweis, dass ausserirdische Intelligenz existiert, ist der dass bis jetzt noch keiner Kontakt zu uns aufgenommen hat

  • 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!

    Philipp function beer no well without!
    -----------------------------------
    I was elected to LEAD, not to READ!

  • 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!

    Philipp function beer no well without!
    -----------------------------------
    I was elected to LEAD, not to READ!

  • 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!