# Eingabe Überprüfung



## Chiffre (12. Nov 2009)

Hallo Community , 

Ich hoffe jemand kann mir helfen wie folgt sieht mein problem aus : 



so alles schön und gut habe ich auch getan : 


```
public static final char SENTINEL =' '; 
public static void main(String[] args) {
		SentinelSchleife();

public static void SentinelSchleife(){
		
		String collect = ""; 
		Scanner console = new Scanner(System.in);
		System.out.print("Geben Sie einen Namen ein(oder eine leere Zeile zum Beenden):");
		String  eingabe = console.next();
		
		
		
		while (eingabe.charAt(0) != SENTINEL){
			
			collect += eingabe ; 
			System.out.print("Geben Sie einen Namen ein (oder eine leere Zeile zum Beenden):");
			eingabe = console.next();
			
			
		}
		
		System.out.println("Willkommen an alle:" + collect +" "); 
}
```

aber die bedingung stimmt nich in der while oder bzw sie wird niemals = . 

hm kann mir wer helfen ?


----------



## javimka (12. Nov 2009)

das Sentinel ist doch ein Leerzeichen. Versuch es mal mit != 10 oder !=13


----------



## Chiffre (12. Nov 2009)

wieso nicht gleich 10 oder nicht gleich 13?! ich will doch überprüfen bzw er soll aus der schleife raus wenn keine zeichen eingeben worden ist?! 

verstehe ich nicht


----------



## javimka (12. Nov 2009)

Es ist wohl ein Problem von Scanner. Er ruft wahrscheinlich trim() auf der Eingabe auf und löscht damit alle Returns und Leerzeichen. Vielleicht machst du es besser mit einerm BufferedReader und System.in.


----------



## Chiffre (12. Nov 2009)

in der uni sollen wir es aber mit nen Scanner machen hm  also vom code her ist das doch nicht falsch oder?! ich komme gerade nicht weiter sonst


----------



## eRaaaa (12. Nov 2009)

ich dneke auch, dass das daran liegt, dass das nicht als token erkannt wird, bzw getrimmt wird. du musst also schon irgendwie ein eof schicken.
würde vllt das ganze so aufbauenm

```
String collect = "";
		Scanner console = new Scanner(System.in);
		System.out
				.println("Geben Sie einen Namen ein(oder eine leere Zeile zum Beenden):");
		String eingabe = "";

		while (console.hasNext()) {

			System.out
					.println("Geben Sie einen Namen ein (oder eine leere Zeile zum Beenden):");
			eingabe = console.next();
			collect += " "+eingabe;

		}

		System.out.println("Willkommen an alle:" + collect + " ");
```

und dann strg+z für eof 
oder du sagst halt, der user soll einen bestimmten string eingeben, z.b. ende um zu beenden, so etwas ließe sich abfragen.


----------



## javimka (12. Nov 2009)

Falls du nicht auf den Scanner bestehst:

```
public static void SentinelSchleife() {
		String collect = "";
		try  {
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			String  eingabe = " ";

			while (eingabe.length()>0){
				collect += eingabe+" " ;
				System.out.print("Geben Sie einen Namen ein (oder eine leere Zeile zum Beenden):");
				eingabe = br.readLine();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println("Willkommen an alle:" + collect +" ");
	}
```


----------



## Chiffre (12. Nov 2009)

Danke erstmal dennoch müssen wir das mit nen scanner machen :/ wenn ich die hasnext methode mache kriege ich trotzdem kein ende . und bekomme das statement    System.out.println("Willkommen an alle:" + collect +" ");


nicht angezeigt hm. 

mit dem buffer funktioniert das zwar ( THX  ) aber das hatten wir noch nicht . 

hm


----------



## Chiffre (12. Nov 2009)

Wenn eine leere Zeile
eingegeben wird, sollen alle bisher eingelesenen Namen ausgegeben werden.
Beispielablauf:

ähm aber eine leere zeile wird doch wie viele leerzeichen gesehe oder?!


----------



## eRaaaa (12. Nov 2009)

mit nem doppelten scanner ginge es  (voll freakig *g*)


```
public static void main(String[] args){
		Scanner s = new Scanner(System.in);
		String eingabe = " ";
		System.out
				.print("Geben Sie einen Namen ein (oder eine leere Zeile zum Beenden):");
		while (s.hasNextLine()) {
			Scanner console = new Scanner(s.nextLine());

			if (!console.hasNext())
				break;

			while (console.hasNext()) {
				System.out
						.print("Geben Sie einen Namen ein (oder eine leere Zeile zum Beenden):");
				eingabe += console.next()+" ";
			}

			console.close();
		}

		System.out.print("Willkommen an alle:" + eingabe );
		s.close();

	}
```


----------



## Chiffre (12. Nov 2009)

fett danke dir  !!!


----------

