[JAVA] Zeichen-Input

Diskutiere [JAVA] Zeichen-Input im Plauderecke - unsere Lounge für Offtopic Themen Forum im Bereich Community; Heho, ich versuche in Java den Input über die Konsole einer Ziffer zur Auswahl im Bereich von inkl. 0 bis inkl. der Länge einer Arraylist zu...

  1. atiman

    atiman Forum Freak

    Dabei seit:
    28.03.2007
    Beiträge:
    99
    Zustimmungen:
    0
    Ort:
    Hamburg
    Mein Notebook:
    Samsung X11 T5500 CeSeBa
    Heho, ich versuche in Java den Input über die Konsole einer Ziffer zur Auswahl im Bereich von inkl. 0 bis inkl. der Länge einer Arraylist zu realisieren.

    Bei meinem folgenden Versuch unterschlägt er jedoch die Eingabeaufforderung...

    Code:
        public void Anfrageablauf() 
            {   int WahlID=0;
                boolean AbfrageIO=false;
                while (AbfrageIO=false) 
                {
                    try 
                    {   
                        int Eingabe = System.in.read(); 
                        WahlID=WahlID+Eingabe;
                    }
                    catch (IOException e) 
                    {
                        System.out.print("Bitte eine gültige Auswahl treffen");
                    }
                    
                    if (WahlID>=0 && WahlID<=SpielerAnlegemöglichkeiten.size()) 
                    {
                        System.out.println("Ihre Auswahl: "+WahlID);
                        AbfrageIO=true;
                    }
                    else 
                    {
                        System.out.print("Bitte eine gültige Auswahl treffen");
                    }
                
               }
            }
    Kann mir da irgendwer helfen??? - BitteBitte!
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort ist für jeden was dabei!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 ThomasN, 01.05.2007
    ThomasN

    ThomasN Ultimate Member

    Dabei seit:
    09.12.2004
    Beiträge:
    6.868
    Zustimmungen:
    0
    Ort:
    Sierning - Back home again ...
    Mein Notebook:
    MacBook Pro 5,5
    ersetz mal

    while (AbfrageIO=false)

    durch

    while (AbfrageIO==false).

    Was du machst ist ne Zuweisung von false auf AbfrageIO. Somit steht da eigentlich while(false), also wird der Block nicht ausgeführt.

    Und, auch wenn es funktionieren sollte, im Programmcode Umlaute zu verwenden ist nicht wirklich guter Stil.
     
  4. bene

    bene Ultimate Member

    Dabei seit:
    16.06.2006
    Beiträge:
    1.136
    Zustimmungen:
    0
    Mein Notebook:
    Inspiron 6400
    Also erst mal versuch das mit den =, was ThomasN schon gesagt hat. Ansonsten hab ich es hier mal gelöst, wie ich es jetzt auf die Schnelle gemacht hätte:

    Code:
    import IOulm.*;
    
    public class Anfrageablauf {
      public static void main(String[] args) {
    
    	int c=-1;
    	int [] d = new int[9];
    
    	System.out.print("Bitte eine gültige Auswahl treffen: ");
    	while(true) {
    		if(Urc.readInt())
    			c=Urc.getInt();
    		if ((c >= 0) && (c < d.length))
    			break;
    		System.out.print("Bitte eine gültige Auswahl treffen: ");
    	}
    	System.out.println("Ihre Auswahl: "+c);
      }
    }
    Allerdings programmier ich noch nicht lange Java und vor allem die Eingabe lös ich momentan noch einfacher. Dazu bräuchtest du das IOulm, was es hier gäbe.
     
  5. atiman

    atiman Forum Freak

    Dabei seit:
    28.03.2007
    Beiträge:
    99
    Zustimmungen:
    0
    Ort:
    Hamburg
    Mein Notebook:
    Samsung X11 T5500 CeSeBa
    Hey, danke ihr Beiden für die Tips! :D

    Hab das jetzt im Moment so:

    Code:
        public int Anfrageablauf() 
            {   int WahlID=0;
                boolean AbfrageIO=false;
                BufferedReader Eingabe = new BufferedReader( new InputStreamReader( System.in ) );
                while (!AbfrageIO) 
                {
                    try 
                    {  
                        String Input = Eingabe.readLine();
                        WahlID = Integer.parseInt( Input );
                    }
                    catch ( NumberFormatException e )
                    {   
                        WahlID=-1;
                        System.out.println("Bitte nur zur Auswahl stehende Zahl eingeben!");
                    }
                    catch (IOException e) 
                    {   
                        WahlID=-1;
                        System.out.println("Error:Bitte eine gültige Auswahl treffen!");
                    }
                    
                    if (WahlID>=0 && WahlID<=SpielerAnlegemöglichkeiten.size()) 
                    {
                        System.out.println("Ihre Auswahl: "+WahlID);
                        AbfrageIO=true;
                    }
                    else 
                    {
                        System.out.println("Ungültige Eingabe! Neueingabe:");
                    }
               }
               return WahlID;
            }
    Funktioniert soweit ganz gut, finde nur die Lösung für das Abfangen der Eingabe und die damit verbundene Nicht-Zuweisung von WahlID durch das setzen von WahlID=-1 ein wenig unprofessionell....

    ....gibt es da sonst noch andere Tips?

    Trotzdem danke soweit =)

    MfG

    ati
     
  6. #5 design2006, 02.05.2007
    Zuletzt bearbeitet: 02.05.2007
    design2006

    design2006 Ultimate Member

    Dabei seit:
    07.06.2006
    Beiträge:
    1.772
    Zustimmungen:
    0
    Ort:
    München
    Mein Notebook:
    Sony Vaio FW46M + FE21S
    Vielleicht ein Tick eleganter:

    Code:
    public int Anfrageablauf() 
    {   
        int WahlID;
        boolean AbfrageIO;
        BufferedReader Eingabe = new BufferedReader(new InputStreamReader(System.in));
    	
        while (!AbfrageIO) 
        {
            try 
            {  
                WahlID = Integer.parseInt(Eingabe.readLine());
    			
                if (WahlID >= 0 && WahlID <= SpielerAnlegemöglichkeiten.size()) 
                {
                    System.out.println("Ihre Auswahl: " + WahlID);
                    AbfrageIO = true;
                }
            }
            catch (NumberFormatException e)
            {   
                System.out.println("Bitte nur zur Auswahl stehende Zahl eingeben!");
            }
            catch (IOException e) 
            {   
                System.out.println("Error:Bitte eine gültige Auswahl treffen!");
            }
            finally
            {
                if (!AbrageIO) 
                {
                    System.out.println("Ungültige Eingabe! Neueingabe:");
                }
            }
        }
        return WahlID;
    }
    Du kannst dir überlegen, ob du die Fehlertexte in den catch-Anweisungen evtl. zusammenfassen willst.
     
  7. atiman

    atiman Forum Freak

    Dabei seit:
    28.03.2007
    Beiträge:
    99
    Zustimmungen:
    0
    Ort:
    Hamburg
    Mein Notebook:
    Samsung X11 T5500 CeSeBa
    Ui, das sieht aber echt elegant aus =) :eek:

    Dankeschön!

    Hat noch jemand eine Idee wie ich nach dem Konstruktor-Aufruf die Konsole "clearen" kann?

    (Irgendwie gibt es beim Programmieren immer Sachen, die man noch verbessern kann :p )

    mfg

    ati
     
  8. Anzeige

    Auf der Suche nach Notebook-Zubehör?
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

[JAVA] Zeichen-Input

Die Seite wird geladen...

[JAVA] Zeichen-Input - Ähnliche Themen

  1. L530 - Tastatur gibt mehrere Zeichen aus, Tastaturwechsel erfolglos

    L530 - Tastatur gibt mehrere Zeichen aus, Tastaturwechsel erfolglos: Hallo Zusammen, ich habe seit kurzem bei meinem Lenovo L530 das Problem, das, wenn ich die Taste 1 drücke auf dem Bildschirm 1q ausgegeben wird....
  2. Medion E7220 - Tastatur erzeugt fehlerhafte Zeichen

    Medion E7220 - Tastatur erzeugt fehlerhafte Zeichen: Hallo zusammen, nach langer Zeit habe ich mal wieder ein Problem, für das ich alleine keine Lösung mehr finde - auch hier, in der Suchfunktion...
  3. Vaio S 2012 vaio SP: Lüfter Input/Output verkehrt?

    2012 vaio SP: Lüfter Input/Output verkehrt?: Hallo zusammen, leider wieder eine Frage bez. des Lüfters bei der S-Serie. In der Suche konnte ich leider nichts dazu finden. Und zwar habe...
  4. Tastatur hat andere Zeichen als zuvor

    Tastatur hat andere Zeichen als zuvor: Nachdem ich meinen Sony Vaio neu aufsetzen musste, hat die Tastatur andere Zeichen als zuvor. @ ist jetzt Q und nicht mehr die 2 # ist...
  5. HP 8510p seltsame Zeichen / Hyroglyphen im Bios

    HP 8510p seltsame Zeichen / Hyroglyphen im Bios: Hallo miteinander, habe einen HP 8510p bei welchem folgendes Problem besteht: 1. Er lässt sich selten zum einschalten bewegen, sodass man...