String array durch Eingabe begrenzen

master123

Mitglied
ich steh grad auf der Leitung und komm nicht weiter. Relativ simpel, ich möchte ein String array erstellen, wo der User zuvor die arraylänge angibt und dann nacheinander die Namen eintippt. Zum Test lasse ich mir die Eingabe nochmals ausgeben.

In etwa so:
Java:
                System.out.println("Anzahl Personen?");
                int laenge = keyScan.nextInt();
                String [] name = new String[laenge];
                System.out.println("Gib die Namen nacheinander ein:");
                    for (int i = 0; i<laenge; i++) {
                    name [i] = keyScan.nextLine();
                }
                  
                for (int i=0; i<laenge; i++) {
                    System.out.println(name[i]);
                }

Aber das ganze funktioniert nicht. Denn wenn ich für int laenge 2 eingebe und dann die Namen eingeben möchte, bricht er schon nach dem ersten Namen ab und gibt mir folgendes aus:

12493

Ich passe den Code an: deaktiviere int laenge und weise für die arraylänge manuell den Wert 2 zu.
Java:
                // System.out.println("Anzahl Personen?");
                // int laenge = keyScan.nextInt();
                String [] name = new String[2];
                System.out.println("Gib die Namen nacheinander ein:");
                    for (int i = 0; i<2; i++) {
                    name [i] = keyScan.nextLine();
                }
                  
                for (int i=0; i<2; i++) {
                    System.out.println(name[i]);
                }

Dann stimmt die Ausgabe:

12494

Was mache ich falsch?
 
Zuletzt bearbeitet:

Robat

Top Contributor
Das Problem ist, dass die nextInt() Methode des Scanners den Zeilenumbruch nicht einliest welcher bei der Eingabe entsteht. Dieser Zeilenumbruch landet dann im Puffer und wird beim nächsten Aufruf von nextLine() eingelesen (anstatt deiner Eingabe). Damit ist der erste Eintrag in deinem Array einfach ein Zeilenumbruch. Um das zu verhindern kannst du nach dem Aufruf von nextInt() einfach nextLine() aufrufen.
 

master123

Mitglied
Super, hat funktioniert. Danke :)
Aber gilt das nur wenn man von nextInt() auf nextLine() wechselt? Ich hatte früher mehrere Eingaben von nextInt() auf nextInt() und da hatte ich nie solche Probleme.
 

mihe7

Top Contributor
Vielleicht mal zur Erklärung: die nextXXX-Methoden des Scanners, mit Ausnahme von nextLine(), lesen die Eingabe in Form sog. Tokens, die von Trennzeichen umgeben sein müssen (bzw. am Anfang der Eingabe sein können). Die Trennzeichen sind in der Regel Whitespace und gehören nicht zum Token.

Wenn Du also eine Eingabe der Form (ws steht für Whitespace)
Code:
<ws><int1><ws><int2><ws>
hast und nextInt() aufrufst, wird das erste Whitespace überlesen, dann <int1> als Token gelesen, das vom zweiten <ws> begrenzt wird. Das zweite <ws> verbleibt in der Eingabe, d. h. nach dem erstmaligen Aufruf von getInt() steht in der Eingabe noch
Code:
<ws><int2><ws>
Rufst Du abermals nextInt() auf, ist das kein Problem, denn das erste <ws> wird überlesen und <int2> als Token gelesen, bis zum letzten <ws>. Dabei spielt es keine Rolle, ob das Whitespace beispielsweise ein Tabulator, ein Leerzeichen oder ein Zeilenumbruch ist.

nextLine() arbeitet ein wenig anders: es liest einfach die Eingabe bis zum Anfang der nächsten Zeile ein. Der Zeilenumbruch wird dabei aus der Eingabe entfernt, ist aber nicht Teil des Ergebnisses.

Gehen wir mal davon aus, dass <ws> ein Zeilenumbruch(<nl>) ist, dann stünde nach dem erstmaligen Aufruf von getInt() in der Eingabe also noch:
Code:
<nl><int2><nl>
Wenn Du hier nextLine() aufrufst, wird ein leerer String "gelesen", weil sofort ein Zeilenumbruch gelesen wird.

Wenn Du Dir folgendes vorstellst (<sp> = Space):
Code:
<sp>32<sp>xyz<nl>

Dann gilt:
1. getInt() liefert 32, während next() "32" liefert und nextLine() " 32 xyz" (inkl. führendem Leerzeichen) zurückgibt.
2. Nach einem nextInt() oder next() verbleibt noch <sp>xyz<nl> in der Eingabe, dann gilt
2.1 next() liefert "xyz", nextInt() eine Exception
2.2 nextLine() liefert " xyz", also inkl. führendem Leerzeichen
 

master123

Mitglied
Aber hätte man im nextLine() nicht auch so eine Art Zeilenumbruch einnauen können? Ist doch billig so nach nextInt() die Eingabe mit nextLine() wieder auf String zu formatieren.

ps: was gibt man eigentlich in den Klammern ein? Bisher liess ich sie immer leer.
 

mihe7

Top Contributor
Aber hätte man im nextLine() nicht auch so eine Art Zeilenumbruch einnauen können?
Du meinst, nextLine() soll die Zeile als Token lesen, das von Zeilenumbrüchen begrenzt wird, also etwas wie <nl><Zeile><nl> und das zweite <nl> in der Eingabe belässt?

Hätte man mit einer zusätzlichen Methode z. B. nextCompleteLine() machen können. Die hätte aber dann den "Rest der Zeile" nicht lesen können, wie das bei nextLine() der Fall ist. Dort hättest Du also wieder das Problem gehabt, dass das <nl> in der Eingabe steht :)

ps: was gibt man eigentlich in den Klammern ein? Bisher liess ich sie immer leer.
Klammern wovon?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Beckenbauer OOP Durch Komma getrennte Einträge in einem String in ein Array oder eine Tabelle schreiben Java Basics - Anfänger-Themen 4
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
D 2D Char Array into String Java Basics - Anfänger-Themen 2
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
R Ein Multidimensionales String Array initialisieren und Deklarieren Java Basics - Anfänger-Themen 2
H Überprüfen ob String Array leer ist Java Basics - Anfänger-Themen 4
L ArrayList<String> --> double[] array Java Basics - Anfänger-Themen 18
R String in char-Array übertragen Java Basics - Anfänger-Themen 5
P Datentypen Array und String Java Basics - Anfänger-Themen 2
A eine neue normale String-Array von einer String-Array, die in for schleife ist, schaffen Java Basics - Anfänger-Themen 3
A keine Ergebnisse - String nummer in array nummer converting Java Basics - Anfänger-Themen 1
Z Matrix Klasse mit Mehrdimensionalen Array (Addition, Multiplikation, to String) Java Basics - Anfänger-Themen 57
F Auto String mit Array Name aus Datei... oder so ähnlich Java Basics - Anfänger-Themen 4
J String aus einem Array entfernen Java Basics - Anfänger-Themen 10
J String Array zu Map<Character, List<Character>> mit Streams Java Basics - Anfänger-Themen 1
S Nutzereingabe splitten und in string array wieder ausgeben. Java Basics - Anfänger-Themen 1
FelixN RegEx aus einem String als String-Array zurückgeben Java Basics - Anfänger-Themen 8
Curtis_MC 2dimensionales Array als String ausgeben Java Basics - Anfänger-Themen 2
I char Array to String Java Basics - Anfänger-Themen 3
I converting boolean Array to String Array Java Basics - Anfänger-Themen 10
P Objekt aus String-Array erzeugen Java Basics - Anfänger-Themen 104
D Eingaben in String Array einlesen Java Basics - Anfänger-Themen 12
R Objekte aus Array als String + kommasepariert speichern Java Basics - Anfänger-Themen 12
scratchy1 Array sortieren und dann String-Repräsentation ausgeben Java Basics - Anfänger-Themen 2
E Array to String Method Reverse Java Basics - Anfänger-Themen 5
Mosquera Get String Array - ComboBox Java Basics - Anfänger-Themen 10
P Strings in String Array schreiben Java Basics - Anfänger-Themen 13
V zweidimensionale String Array Java Basics - Anfänger-Themen 1
J String, Int und double Array sortieren Java Basics - Anfänger-Themen 16
M Array nach String durchsuchen und zurückgeben Java Basics - Anfänger-Themen 16
J Klassen Zugriff auf ein "String Array" Java Basics - Anfänger-Themen 6
C Methoden String in char Array Java Basics - Anfänger-Themen 3
T Schauen ob eine Ziffer in einem String-Array häufiger vorkommt Java Basics - Anfänger-Themen 8
L Prüfe, ob die im String Array enthaltenen Strings aufsteigend sind. Java Basics - Anfänger-Themen 19
N String array to String Java Basics - Anfänger-Themen 6
informatikschüler21 String im Array sortieren Java Basics - Anfänger-Themen 4
B String in Array speichern Java Basics - Anfänger-Themen 4
L String zu String Array Java Basics - Anfänger-Themen 2
D Input/Output Array in einem String mit einem Trennzeichen verbinden Java Basics - Anfänger-Themen 17
D String-Array Java Basics - Anfänger-Themen 3
V String Array gegen null-Eintrag sichern Java Basics - Anfänger-Themen 11
K String in String-Array suchen Java Basics - Anfänger-Themen 11
K String Array basierend auf int Array füllen Java Basics - Anfänger-Themen 2
K Im String Array suchen Java Basics - Anfänger-Themen 8
D Elements[] string = document.getElementsByClass("betEvent"); als Array Java Basics - Anfänger-Themen 1
C Array in String umwandeln Java Basics - Anfänger-Themen 5
D Best Practice String aufbau - Char Array oder Anhängen Java Basics - Anfänger-Themen 11
M String Array mischen Java Basics - Anfänger-Themen 3
F Methoden Kontaktliste - String in einem Array suchen und ausgeben Java Basics - Anfänger-Themen 3
K String zu int Array Java Basics - Anfänger-Themen 3
B String auslesen und Stellen im Array speichern Java Basics - Anfänger-Themen 1
W Array in String und String in Array - falsche Ausgaben Java Basics - Anfänger-Themen 20
W String Array in Int umwandeln um auf Zahl zu überprüfen Java Basics - Anfänger-Themen 4
W Array nach String durchsuchen und Ausgeben Java Basics - Anfänger-Themen 8
B Binäre Suche in einem String Array Java Basics - Anfänger-Themen 10
K String in String-Array finden Java Basics - Anfänger-Themen 7
S Rückgabe-Array lässt sich nicht auslesen, LocalDate mit String Java Basics - Anfänger-Themen 3
J 2 String Arrays in neuem String Array verbinden Java Basics - Anfänger-Themen 4
S String zu quadratischen Array Java Basics - Anfänger-Themen 3
T Array mit String, Zahlen in If Saetze packen Java Basics - Anfänger-Themen 3
J Int Array und String in einer neuen Methoder übergeben Java Basics - Anfänger-Themen 7
S ArrayDeque zu String Array Java Basics - Anfänger-Themen 2
A Variablen String Array in einzelne Strings auspalten Java Basics - Anfänger-Themen 4
K Input/Output 6000 Zeilen einlesen und String-Array vergleichen? Java Basics - Anfänger-Themen 1
fLooojava String zu Array Java Basics - Anfänger-Themen 5
C Array List mit String vergleichen und Fehlermeldung ausgeben Java Basics - Anfänger-Themen 6
J array in String umwandeln Java Basics - Anfänger-Themen 1
J array in String umwandeln Java Basics - Anfänger-Themen 3
E Erste Schritte Array soll kleiner werdenden String erstellen Java Basics - Anfänger-Themen 5
D String-Array aus Tastatureingabe Java Basics - Anfänger-Themen 4
A Mehrdimensionalles Array in String ausgeben in Liste Java Basics - Anfänger-Themen 5
L String array mit split füllen Java Basics - Anfänger-Themen 14
P Datentypen String auf JTextField wird zu Char-Array und anschließend zu int Java Basics - Anfänger-Themen 12
A private string array Java Basics - Anfänger-Themen 5
W String / Int-Array Java Basics - Anfänger-Themen 13
C Doppelte Einträge aus String [] Array entfernen. Java Basics - Anfänger-Themen 5
T Sortieren/Suche klappt nicht ganz (String Array) Java Basics - Anfänger-Themen 2
B Werte über Scanner in ein 3 dim String Array schreiben Java Basics - Anfänger-Themen 7
T String in Array suchen Java Basics - Anfänger-Themen 9
G String einem String Array übergeben Java Basics - Anfänger-Themen 3
G String to Array Java Basics - Anfänger-Themen 2
P CSV Datei in String Array -> Split -> New Array Java Basics - Anfänger-Themen 2
U OOP Array vom Typ String > Inhalt ausgeben Java Basics - Anfänger-Themen 8
F Variablen String-Array wird ungewollt "überschreiben" Java Basics - Anfänger-Themen 7
J Zeichen aus String Array lesen Java Basics - Anfänger-Themen 13
S Länge eines Elements im String Array Java Basics - Anfänger-Themen 5
F Problem: Verschlüsselung von String in Array Fehler Java Basics - Anfänger-Themen 2
C Datentypen Zweidimensionales Array mit String und int Java Basics - Anfänger-Themen 3
J Array zu String Java Basics - Anfänger-Themen 13
B String Array in main() Java Basics - Anfänger-Themen 2
G String Array konvertieren in Integer Array? Java Basics - Anfänger-Themen 7
Junb String in Array speichern Java Basics - Anfänger-Themen 4
J Einem String-Array in einer for-Schleife Strings zuweisen - Klappt nicht in einer for-Schleife Java Basics - Anfänger-Themen 5
P String Sortieren in einem Array Java Basics - Anfänger-Themen 7
W String & Integer im Array Java Basics - Anfänger-Themen 7
C Datentypen int array in String ausgeben Java Basics - Anfänger-Themen 20

Ähnliche Java Themen

Neue Themen


Oben