Strings mit Scanner (nextLine) einlesen

  • Themenstarter Themenstarter Gelöschtes Mitglied 50697
  • Beginndatum Beginndatum
G

Gelöschtes Mitglied 50697

Gast
Hallo alle zusammen,

ich versuche gerade mittels des Scanners Strings in Java einzulesen. Den Scanner habe ich "scan" genannt. Ich benutze zum einlesen "scan.nextLine()". Ich habe diese Methode bereits bei anderen Programmen erfolgreich angewendet. Jetzt stehe ich aber vor dem Problem, dass diese Methode Zeilen "verschluckt".

Hier der Quelltextauszug:

Java:
    switch(auswahl) {
            
                case 1: // Adresse eingeben
                    System.out.println("Name: ");
                    adr.name =scan.nextLine();
                                        
                    System.out.println("Strasse: ");
                    adr.strasse =scan.nextLine();
                    
                    System.out.println("Hausnummer: ");
                    adr.hausnummer =scan.nextInt();
                    
                    System.out.println("Wohnort: ");
                    adr.wohnort =scan.nextLine();
                    
                    System.out.println("PLZ: ");
                    adr.plz =scan.nextInt();
                    
                    System.out.println("E-Mail: ");
                    adr.mail =scan.nextLine();
                    
                    System.out.println("Kommentar: ");
                    adr.kommentar =scan.nextLine();
                    
                    break;

Wenn ich das Programm laufen lasse, dann "printed" das Programm "Name" und "Strasse" direkt hintereinander, ohne dass ich bei Name eine Eingabe machen kann. "Name" und "Strasse" werdem quasi zusammengezogen. Das gleiche Problem tritt auch bei den anderen Variablen auf, die ich mittels next.Line() einlesen will.

Kann mir jemand sagen, wo der Fehler liegt?

Vielen Dank und viele Grüße!

Marsupi
 
Hi Franky27, vielen Dank für den Tipp, aber ich konnte hier keine Lösung für mein Problem erkennen. Wenn ich wie vorgeschlagen eine zweite Zeile mit nextLine() anfüge, tritt zwar der von mir beschriebene Fehler nicht mehr auf, allerdings verursacht diese Methode an anderer Stelle ein Problem, da nun der Inhalt der Variablen mit einer Leerzeile überschrieben wird und daher bei der Datenausgabe leer ist. Wenn ich bei der vorgeschlagenen Vorgehensweise etwas übersehen haben sollte, wäre es nett, wenn Du es mir erklären könntest. Bin für jeden Tipp dankbar. Grüße! Marsupi
 
Hi Asadiya,

vielen Dank für Deine Antwort. Daran habe ich auch schon gedacht, allerdings nimmt next() nur einen String auf, was der Intention des Programms etwas entgegenläuft. Bei einem "Namen" wie "Hans Peter" würde dann nur das Hans genommen und Peter bei der nächsten Variablen "Strasse" auflaufen.

Vielleicht sollte ich mich einfach von der Idee verabschieden, die Daten mit dem "Scanner" einzulesen lieber mit "BufferedReader" arbeiten.

Vielen Dank für den Tipp und einen schönen Abend.

Grüße!

Marsupi
 
Moin!

Ich habe das ganze jetzt nochmal mit dem BufferedReader realisiert. Das läuft einwandfrei. Hier einmal der geänderte Code:

Java:
switch(auswahl) {
            
                case 1: // Adresse eingeben
                    System.out.println("Name: ");
                    adr.name =br.readLine();
                                        
                    System.out.println("Strasse: ");
                    adr.strasse =br.readLine();
                    
                    System.out.println("Hausnummer: ");
                    String eingabe2 = br.readLine();
                    adr.hausnummer = Integer.parseInt(eingabe2);
                    
                    System.out.println("Wohnort: ");
                    adr.wohnort =br.readLine();
                    
                    System.out.println("PLZ: ");
                    String eingabe3 = br.readLine();
                    adr.plz = Integer.parseInt(eingabe3);
                    
                    System.out.println("E-Mail: ");
                    adr.mail =br.readLine();
                    
                    System.out.println("Kommentar: ");
                    adr.kommentar =br.readLine();
                    
                    break;

Die Integers muss ich zwar parsen, aber dafür läuft es. Wenn mir jetzt noch jemand sagen könnte, warum das mit dem BufferedReader läuft aber mit dem Scanner nicht, wäre ich wirklich glücklich 🙂
 
Hi franky27,

anbei der Code der das Problem verursacht. Ich habe nur an die Stellen den Zusatzcode mit nextLine() gehängt, wo es notwendig war um das beschriebene (erste) Problem zu lösen.

Java:
switch(auswahl) {
            
                case 1: // Adresse eingeben
                    System.out.println("Name: ");
                    adr.name =scan.nextLine();
                    scan.nextLine();
                                        
                    System.out.println("Strasse: ");
                    adr.strasse =scan.nextLine();
                    
                    System.out.println("Hausnummer: ");
                    adr.hausnummer =scan.nextInt();
                    
                    System.out.println("Wohnort: ");
                    adr.wohnort =scan.nextLine();
                    scan.nextLine();
                    
                    System.out.println("PLZ: ");
                    adr.plz =scan.nextInt();
                    scan.nextLine();
                    
                    System.out.println("E-Mail: ");
                    adr.mail =scan.nextLine();
                    
                    System.out.println("Kommentar: ");
                    adr.kommentar =scan.nextLine();
                    
                    break;
            
                case 2: // Adresse ausgeben
                    System.out.println(adr.name);
                    System.out.println(adr.strasse+" "+adr.hausnummer);
                    System.out.println(adr.plz+" "+adr.wohnort);
                    System.out.println("E-Mail: "+adr.mail);
                    System.out.println("Kommentar: "+adr.kommentar);
                    break;

Mit diesem Code wird zwar nichts mehr "zusammengezogen" und ich kann auch an jeder Stelle Daten eingeben. Allerdings bleibt bei der Ausgabe jetzt "Name" und "Wohnort" leer.

Grüße!

Marsupi
 

Zurück
Oben