Java for-Schleife überspringt eine Eingabe

MarcoRolex

Mitglied
Hallo Zusammen

Ich habe ein kleines Problem. Nämlich überspringt die for-Schleife eine Eingabe, also wartet nicht bis ich den Text eingegeben habe, und geht zur nächsten Anweisung.
Hier der Code:
Java:
public void eingabeSatz()
    {
       
        System.out.println("Wie viele Wörter hat ihr Satz?");
        anzahlWörter = scan.nextInt();
        String [] Satz = new String[anzahlWörter];
        for(int i = 1; i <= anzahlWörter; i++)
        {
            System.out.println("Geben Sie das " + i +". Wort ein.");
            i--;
            Satz[i] = scan.nextLine();
            i++;
        }

Die Ausgabe sieht dann so aus:
--------------------------------
Wie viele Wörter hat ihr Satz?
3
Geben Sie das 1. Wort ein.
Geben Sie das 2. Wort ein.
-------------------------------
Ich gebe halt die "3" ein und möchte dementsprechend das 1. Wort eingeben.
Aber leider kommt dann direkt die Meldung "Geben Sie das 2. Wort ein."

Hat jemand eine Lösung?

Gruss
 

Thallius

Top Contributor
Du solltest

scan.nextLine()

benutzen statt nextInt. Dann müsste es funktionieren. Ansonsten holt er nur das Int läßt aber ein linefeed im scanbuffer, welches den nächsten nextLine in der Schleife direkt zurückkehren läßt.

Gruß

Claus
 
X

Xyz1

Gast
Beispiele immer bitte möglichst vollständig.
So:
Java:
        Scanner scan = new Scanner(System.in);
        System.out.println("Wie viele Wörter hat ihr Satz?");
        int anzahlWörter = scan.nextInt();
        scan.nextLine();
        String [] Satz = new String[anzahlWörter];
        for(int i = 1; i <= anzahlWörter; i++)
        {
            System.out.println("Geben Sie das " + i +". Wort ein.");
            i--;
            Satz[i] = scan.nextLine();
            i++;
        }
        System.out.println("Arrays.toString(Satz) = " + Arrays.toString(Satz));

Code:
Wie viele Wörter hat ihr Satz?
5
Geben Sie das 1. Wort ein.
a
Geben Sie das 2. Wort ein.
b
Geben Sie das 3. Wort ein.
c
Geben Sie das 4. Wort ein.
d
Geben Sie das 5. Wort ein.
e
Arrays.toString(Satz) = [a, b, c, d, e]
 

Jardcore

Top Contributor
Du solltest die for Schleife zusätzlich auch bei 0 beginnen lassen. Die 1 führt in deinem Fall nur zu unschönen Code. Außerdem verwendet man keine Umlaute im Quellcode und Variablennamen werden klein geschrieben.
Java:
System.out.println("Wie viele Wörter hat ihr Satz?");
String[] satz = new String[Integer.parseInt(scan.nextLine())];

for(int index = 0; index < satz.length; index++) {
    System.out.println(String.format("Geben Sie das %d Wort ein.", index + 1));
    satz[index] = scan.nextLine();
}
 
X

Xyz1

Gast
Du solltest die for Schleife zusätzlich auch bei 0 beginnen lassen. Die 1 führt in deinem Fall nur zu unschönen Code. Außerdem verwendet man keine Umlaute im Quellcode und Variablennamen werden klein geschrieben.
1. völliger quatsch, das ist geschmackssache.
2. Anfänger müssen sich nicht an Convention halten.
 
X

Xyz1

Gast
Darf ich mal erwähnen, dass Thalliuss Lösung nicht die erste bei StackOverflow ist, und er ein "Gefällt mir" bekommt, ich aber nicht?!?!
Außerdem entscheidest du nicht, wem geholfen wird, und wem nicht.
Wenn er als Basics noch nicht verstanden hat, dass man Scanner nicht verwenden sollte, dann bringt Convention auch nichts.
Also, berichtigt euren Fehler und dankt mir. :D (Yeah, heute bin ich schlecht "drauf" :D )
 

mrBrown

Super-Moderator
Mitarbeiter
Darf ich mal erwähnen, dass Thalliuss Lösung nicht die erste bei StackOverflow ist, und er ein "Gefällt mir" bekommt, ich aber nicht?!?!
Und jetzt hat er sogar 2, sagt viel über die Antwortqualität aus ;)

Außerdem entscheidest du nicht, wem geholfen wird, und wem nicht.
Aber zumindest wem er hilft und wem nicht (und viele andere haben da die gleichen Kriterien), von daher hat er vollkommen Recht...

Wenn er als Basics noch nicht verstanden hat, dass man Scanner nicht verwenden sollte, dann bringt Convention auch nichts.
Da das der Hauptteil gefühlt jeden zweiten Beitrags von dir ist, gibts irgendwann auch mal ne Begründung dazu von dir?
Also, berichtigt euren Fehler und dankt mir. :D (Yeah, heute bin ich schlecht "drauf" :D )
Wer als Basic noch nicht verstanden hat, dass ... ach lassen wir das lieber...
 

Jardcore

Top Contributor
Ich für meinen Teil bin immer froh wenn mir jemand sagt wie etwas 'eigentlich' gemacht wird und wie ich mich verbessern kann. (best practice sind Gold wert)
Wenn man nach seinem Studium/Ausbildung in ein neues Arbeitsverhältnis kommt und merkt das man Jahrelang quatsch gelernt hat hilft es einem auch nicht ein Rebell gewesen zu sein und sich nicht an Konventionen gehalten zu haben.
 
X

Xyz1

Gast
Ich hab euch doch schon erklärt, wie man es richtig macht.
1. Scanner nicht verwenden,
2. nextInt() nicht verwenden,
3. wenn doch nextInt(), dann anschließend nextLine(),
4. wenn 1. - 3. ignoriert wird, dann sind Convention auch egal,
5. vollständige Beispiele, SSCCE, schreiben,
6. einstellen? Wen oder was bei wem einstellen?
7. Ihr habt wohl ein paar Jahre das Falsche gelernt.

SO nennt zwei Möglichkeiten,
8. anschließend nextLine(), oder
9. gut und richtig Parsen.

Davon sehe ich alle noch weit entfernt.

"menschliche Interkommunikation" ---- mag schon sein, dass es das hapert, aber ich muss niemanden gefallen. Erst Recht nicht, wenn alle wie die Lemminge auf das falsche "Gefällt mir" klicken. Sonst fällt mir nicht so viel ein. Wer will ne Eis? :)
 

mrBrown

Super-Moderator
Mitarbeiter
1. Scanner nicht verwenden,
2. nextInt() nicht verwenden,
Begründe doch mal, damits auch Anfänger verstehen.

3. wenn doch nextInt(), dann anschließend nextLine(),
Oder man passt den Delemiter an oder liest nicht Zeilenweise...

4. wenn 1. - 3. ignoriert wird, dann sind Convention auch egal,
Ich finde auch, das man eigentlich dringend mal das StGB aufheben sollte, bei den ganzen Geschwindigkeitsüberschreitungen die's täglich gibt...

6. einstellen? Wen oder was bei wem einstellen?
7. Ihr habt wohl ein paar Jahre das Falsche gelernt.
Listen sollten schon einen gemeinsamen Kontext haben (im Idealfall zur Überschrift passend)

SO nennt zwei Möglichkeiten,
8. anschließend nextLine(), oder
9. gut und richtig Parsen.
SO nennt so ziemlich alles, nach dem was du da so zitierst auch öfter mal veraltetes oder Unsinn...

Ich.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Jose05 Java Anwendung, über den Browser steuern Frameworks - Spring, Play, Blade, Vaadin & Co 1
S java springboot HTML Produktstruktur Frameworks - Spring, Play, Blade, Vaadin & Co 1
G Java springboot Item mit ItemInstance verbinden Frameworks - Spring, Play, Blade, Vaadin & Co 2
thor_norsk Javac nicht vorhanden in Java-17-openjdk-amd64 Frameworks - Spring, Play, Blade, Vaadin & Co 8
padde479 Cannot invoke "java.util.Map.containsKey(Object)" because "requestMap" is null Frameworks - Spring, Play, Blade, Vaadin & Co 2
OnDemand Vaadin Pro & TypScript vs Plain Java Frameworks - Spring, Play, Blade, Vaadin & Co 4
S Java Web App oder PHP Frameworks - Spring, Play, Blade, Vaadin & Co 10
Zrebna SpringBoot-Project: java.sql.SQLSyntaxErrorException: Access denied for user 'gap3'@'%' to database '3306/gap3' Frameworks - Spring, Play, Blade, Vaadin & Co 3
L Hilfe beim Erstellen einer Java Web Anwendung gesucht Frameworks - Spring, Play, Blade, Vaadin & Co 5
8u3631984 required a bean of type 'java.lang.String' that could not be found. Frameworks - Spring, Play, Blade, Vaadin & Co 8
M Java Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 5
OnDemand Webfrontend mit Java Backend Frameworks - Spring, Play, Blade, Vaadin & Co 26
F Server-Java-Spring Websockets Frameworks - Spring, Play, Blade, Vaadin & Co 6
L Controller Spring Boot mit Java Frameworks - Spring, Play, Blade, Vaadin & Co 20
J Spring Boot Thymleaf mit Java.Optional Frameworks - Spring, Play, Blade, Vaadin & Co 0
B Java Spring Boot - POM-Problem Frameworks - Spring, Play, Blade, Vaadin & Co 8
H OAuth2 mit Spring boot und Java Frameworks - Spring, Play, Blade, Vaadin & Co 5
P Java EE vs. Spring Frameworks - Spring, Play, Blade, Vaadin & Co 2
K Spring Security für Java SE Frameworks - Spring, Play, Blade, Vaadin & Co 2
V Java (Eclipse) programmierung zum Springerproblem Frameworks - Spring, Play, Blade, Vaadin & Co 1
Java.getSkill() Gemeinsam Java Spring lernen Frameworks - Spring, Play, Blade, Vaadin & Co 17
S Senior-Softwareentwickler (m/w) Java / Spring im Raum Frankfurt Frameworks - Spring, Play, Blade, Vaadin & Co 0
MQue Meine Java Spring Appl Frameworks - Spring, Play, Blade, Vaadin & Co 0
W Java Applet aus der Taskleiste springt in Vordergrund Frameworks - Spring, Play, Blade, Vaadin & Co 3
S Java Applet:Thread.Timeout überspringt Teile des Codes Frameworks - Spring, Play, Blade, Vaadin & Co 2
S Integrations Test in Java mit Spring Frameworks - Spring, Play, Blade, Vaadin & Co 2
A Java Bean Validation und Spring Webflow Frameworks - Spring, Play, Blade, Vaadin & Co 0
Y java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener Frameworks - Spring, Play, Blade, Vaadin & Co 14
W java Spring mit db Frameworks - Spring, Play, Blade, Vaadin & Co 1
nrg Debugger springt immer in Java SE Code Frameworks - Spring, Play, Blade, Vaadin & Co 3
B Spring / Jpa / Hibernate -> java.lang.IllegalArgumentException: Unknown entity Frameworks - Spring, Play, Blade, Vaadin & Co 1
H java web anwendung auf spring 2.0 umstellen Frameworks - Spring, Play, Blade, Vaadin & Co 3
Dimax Ein Objekt mit "auto_increment key " in der Schleife speichern Frameworks - Spring, Play, Blade, Vaadin & Co 7
D Schleife mit 10 Wiederholungen die Werte überspringt Frameworks - Spring, Play, Blade, Vaadin & Co 7
F Programm überspringt wichtige if-Schleife. Frameworks - Spring, Play, Blade, Vaadin & Co 6
H Schleife rausspringen / Wert merken Frameworks - Spring, Play, Blade, Vaadin & Co 7
S ...aus while schleife springen Frameworks - Spring, Play, Blade, Vaadin & Co 3
B Wert in einer while schleife überspringen Frameworks - Spring, Play, Blade, Vaadin & Co 7
CT9288 Thread.sleep überspringt "scheinbar"Aufgaben Frameworks - Spring, Play, Blade, Vaadin & Co 1
E POI überspringt leere Excelzellen Frameworks - Spring, Play, Blade, Vaadin & Co 1
L Scanner der bestimmte Zeichen überspringt. Frameworks - Spring, Play, Blade, Vaadin & Co 4
C JTable Anzeige überspringt Zwischenschritte bei Änderungen Frameworks - Spring, Play, Blade, Vaadin & Co 3

Ähnliche Java Themen

Neue Themen


Oben