warum endlosschleife?

tameck

Erfahrenes Mitglied
wieso gibt das hier eine endlosschleife

Code:
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
 
Weil dein beenden, wohl nie den Wert aendert. Wenn deine erste Eingabe ein "e" ist, duerfte keine Endlosschleife kommen, sonst immer.
 
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)
 
das komische dabei ist ich verwende diese schleife in einem anderem programm genauso und da gibts es keine endlosschleife ..
 
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).
 
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
 
Code:
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;
				}
			}
		}
}
 
Zurück