[JAVA] Zeichen-Input

Dieses Thema im Forum "Plauderecke - unsere Lounge für Offtopic Themen" wurde erstellt von atiman, 01.05.2007.

  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