# while mit Enter-Taste abbrechen



## f145h (25. Jul 2007)

Schreiben Sie ein Programm, das den Anwender nach seinem Namen fragt und dann den Namen zusammen entweder mit "Ms." oder "Mr." ausgibt, je nachdem ob der Name weiblich oder männlich ist. Angenommen, dass die einzigen weiblichen Namen 

Amy 
Buffy 
Cathy 
und, dass die einzigen männlichen Namen 

Elroy 
Fred 
Graham 
sind. Alle anderen Namen werden ohne Anrede ausgegeben. Das Programm setzt seine Schleifendurchläufe solange fort, bis der Anwender die Eingabe-Taste drückt, ohne zuerst etwas einzugeben. 

C:\>java Anrede
Geben Sie einen Namen ein:
Amy Johnson
Ms. Amy Johnson

Geben Sie einen Namen ein:
Fred Smith
Mr. Fred Smith

Geben Sie einen Namen ein:
Zoltan Jones
Zoltan Jones

Geben Sie einen Namen ein:

C:\>


```
String inData="",name,w1,w2,w3,m1,m2,m3;	
  	w1="Amy";w2="Buffy";w3="Caty";   
  	m1="Elroy";m2="Fred";m3="Graham";
  	
  	  

    //was kommt hier rein???while()
    while(inData!=??) {
    	
        System.out.println("Geben Sie einen namen ein:");
        inData = stdin.readLine();
        
    if(inData.startsWith(w1)||inData.startsWith(w2)||inData.startsWith(w3))
    
    	System.out.println("Mrs "+inData);
    
	 if(inData.startsWith(m1)||inData.startsWith(m2)||inData.startsWith(m3))
	 
		 System.out.println("Mr "+inData);
	 
	 
	 

	    	

  
    System.out.println("Geben Sie einen namen ein:");
    inData = stdin.readLine();

    System.out.println(inData);
    
    } 
  }
    
}
```

seit 2 stunden arbeite ich dran aber trotzdem 0 erfolg!!!!
Das Programm setzt seine Schleifendurchläufe solange fort, bis der Anwender die Eingabe-Taste drückt, ohne zuerst etwas einzugeben?????


----------



## Groxxda (25. Jul 2007)

Prüf doch einfach, ob die Länge nicht stimmt..?


```
while (inData.length() > 0) {...}
```


----------



## der JoJo (25. Jul 2007)

da solltest du aber inData mit einem wert initialisieren, sonnst bricht er gleich ab, oder du machst eine fussgesteuerte Schleife


----------



## mikachu (25. Jul 2007)

der JoJo hat gesagt.:
			
		

> da solltest du aber inData mit einem wert initialisieren, sonnst bricht er gleich ab, oder du machst eine fussgesteuerte Schleife


hatter doch, gugg mal genauer hin 

1   String inData="",name,w1,w2,w3,m1,m2,m3;


----------



## P3AC3MAK3R (25. Jul 2007)

Laß Dir doch einfach erstmal ausgeben, was jeweils in der Variablen inData steht und schau Dir dann an, was in der Variablen steht, wenn Du Return drückst.

Mit dem Ergebnis konstruierst Du dann einen if-Block (Position: nach Zeile 11), in dem die while-Schleife per


```
break;
```

verlassen wird.


----------



## JPKI (25. Jul 2007)

Oder mit ner for-Schleife.

```
for (String newName = stdin.readLine(); newName != null && newName.length() >= 1; newName = stdin.readLine()) { ... }
```


----------



## Groxxda (25. Jul 2007)

Stimmt, 
das is wohl eines der Anwendungsgebiete, bei der do-while-Schleifen Anwendung finden und das auch recht elegant erledigen...

Schöner als ne Zuweisung in der Bedingung auf jeden Fall


----------



## Guest (25. Jul 2007)

```
if(eingabe.equels(""))
   break;
```


----------



## der JoJo (25. Jul 2007)

Anonymous hat gesagt.:
			
		

> ```
> if(eingabe.equels(""))
> break;
> ```



du meinst equ*a*ls("") oder  

#edit
@mika.fhdw
ja ne is klar, aber die länge des initialisierten Strings ist trotzdem 0 !!! weil new String("").length()==0 !


----------



## Groxxda (25. Jul 2007)

equals is in dem Fall meiner Meinung nach eher verschwendung, weil das erst noch den Typ des übergebenen Objekts prüft, und dann auch als erstes die Länge überprüft.


----------



## der JoJo (25. Jul 2007)

also alle tips zusammen:

```
do
{
 ...
}while(inData.length()>0);
```


----------



## f145h (25. Jul 2007)

vielen Dank!!!

ich hab die ganze zeit gedacht da inData ein String ist,sollte 
die Enter-taste     inData="";    sein und deshalb
while(inData!="") aber leider falsch.

dass ich auch "while(inData.length()>0) " nehmen kann, daran hab ich gar nicht gedacht


----------



## Groxxda (25. Jul 2007)

Du solltest dir generell abgewöhnen sämtliche Objekte mit == oder != zu vergleichen. Nur bei ENUM und int funktioniert das korrekt


----------



## merlin2 (25. Jul 2007)

Nein, es funktioniert mit allen primitiven Datentypen, nicht nur mit int.


----------

