Eingabe Überprüfung

Status
Nicht offen für weitere Antworten.

Chiffre

Mitglied
Hallo Community ,

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



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

Java:
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 ?
 
Zuletzt bearbeitet:

Chiffre

Mitglied
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

Top Contributor
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

Mitglied
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

Top Contributor
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
Java:
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

Top Contributor
Falls du nicht auf den Scanner bestehst:
Java:
	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

Mitglied
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 :D ) aber das hatten wir noch nicht .

hm
 

Chiffre

Mitglied
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

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

Java:
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();

	}
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben