tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von zerix
ERLEDIGT
NEIN
ANTWORTEN
8
ZUGRIFFE
360
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    tameck tameck ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Beiträge
    187
    wieso gibt das hier eine endlosschleife

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    
    InputStreamReader isr = new InputStreamReader ( System.in );
                BufferedReader stdin = new BufferedReader ( isr ); 
            
        
                    try {
                        input = stdin.readLine();
                    } catch (IOException e) {
                    
                        e.printStackTrace();
                    }
                while(beenden==0){
        
                    if(input.equals("w")){
                
                        System.out.println("hoch");
                    }
                    else if(input.equals("a")){
                        
                        System.out.println("links");
                    }
                    else if(input.equals("s")){
                        
                        System.out.println("runter");
                    }
                    else if(input.equals("d")){
                        
                        System.out.println("rechts");
                    }
                    else if(input.equals("e")){
                        
                        beenden = beenden + 1;
                    }
                }

    danke für eure hilfe

    gruß tameck
     

  2. #2
    MiMi MiMi ist offline Mitglied Smaragd
    Registriert seit
    Sep 2007
    Beiträge
    1.177
    Weil dein beenden, wohl nie den Wert aendert. Wenn deine erste Eingabe ein "e" ist, duerfte keine Endlosschleife kommen, sonst immer.
     

  3. #3
    Avatar von Matze
    Matze Matze ist offline Weltenwanderer
    Registriert seit
    Jul 2007
    Ort
    Die Welt
    Beiträge
    1.504
    Blog-Einträge
    7
    Jetzt mal ohne deinen Code gelesen zu haben. Mach mal einen System.out und check mal ob überhaupt jemals eine Abbruchsbedingung eintritt (ist die Variabla "beenden" jemals was anderes als 0)
     
    "... Jeder von uns ist Kunst... gezeichnet vom Leben" (Casper)

    "Sir?, we're sorrounded!"
    "Excellent, we can attack in any direction"

  4. #4
    tameck tameck ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Beiträge
    187
    das komische dabei ist ich verwende diese schleife in einem anderem programm genauso und da gibts es keine endlosschleife ..
     

  5. #5
    Avatar von Matze
    Matze Matze ist offline Weltenwanderer
    Registriert seit
    Jul 2007
    Ort
    Die Welt
    Beiträge
    1.504
    Blog-Einträge
    7
    Dann poste doch mal den ganzen Code
     
    "... Jeder von uns ist Kunst... gezeichnet vom Leben" (Casper)

    "Sir?, we're sorrounded!"
    "Excellent, we can attack in any direction"

  6. #6
    Kulabac Kulabac ist offline Mitglied Gold
    Registriert seit
    Apr 2007
    Beiträge
    181
    Das muss zwangsläufig eine Endlosschleife ergeben. Geht doch gar nicht anders.
    Wenn du das input = stdin.readLine(); mit in der Schleife drin hättest, würde es funktionieren, aber so wie es jetzt ist, liest er doch nur ein einziges Mal einen Buchstaben ein und überprüft danach nur noch, ob sich der Wert von beenden geändert hat (wobei der sich ja innerhalb der Schleife gar nicht ändern kann, außer der erste und einzige eingelesene Buchstabe war ein e).
     

  7. #7
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Hallo,

    schau mal, du liest doch ein und dann beginnt deine Schleife. Das heißt die Variable input wird einmal gesetzt und dann kommt das Programm in die Schleife. Da sich die Variable ja nie ändert wird beenden auch nicht neu gesetzt.
    Wie ist denn der Anfangswert von beenden?

    MFG

    zEriX
    tameck bedankt sich. 
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  8. #8
    tameck tameck ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Beiträge
    187
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    
    public void bewegespielfigur() {
            
                InputStreamReader isr = new InputStreamReader ( System.in );
                BufferedReader stdin = new BufferedReader ( isr ); 
            
        
                    try {
                        input = stdin.readLine();
                    } catch (IOException e) {
                    
                        e.printStackTrace();
                    }
                while(beenden==0){
        
                    if(input.equals("w")){
                
                        System.out.println("hoch");
                        
                    }
                    else if(input.equals("a")){
                        
                        System.out.println("links");
                        
                    }
                    else if(input.equals("s")){
                        
                        System.out.println("runter");
                        
                    }
                    else if(input.equals("d")){
                        
                        System.out.println("rechts");
                        
                    }
                    else if(input.equals("e")){
                        
                        beenden = beenden + 1;
                    }
                }
            }
    }
     

  9. #9
    tameck tameck ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Beiträge
    187
    danke habs hinbekommen

    @zerix danke deine antwort hat mir geholfen
     

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 26.08.08, 14:50
  2. Batch For endlosschleife aber warum? Bitte um hilfe
    Von wannabeapro im Forum Sonstige Sprachen
    Antworten: 4
    Letzter Beitrag: 12.09.07, 14:11
  3. endlosschleife
    Von andulus im Forum PHP
    Antworten: 9
    Letzter Beitrag: 08.12.05, 19:17
  4. Warum Endlosschleife?
    Von Oliver Gierke im Forum Java
    Antworten: 4
    Letzter Beitrag: 20.12.04, 15:14
  5. warum ergibt das ne endlosschleife?
    Von Rios im Forum PHP
    Antworten: 9
    Letzter Beitrag: 16.10.02, 15:32