Alternative zu scan.nextLine()

PascalC

Mitglied
Hi,

ich hab das Problem das bei meinem Code oftmals bei einer Nutzereingabe scan.nextLine() übersprungen wird und ich deshalb gezwungen bin, das Feld zweimal in den Code einzufügen.

Gibt es dafür eine elegantere Lösung?

Java:
Spieler typ = new Spieler(null, 0, null, 0);
				
				System.out.println("Wie heißt du?");
				typ.name = scan.nextLine();
				typ.name = scan.nextLine();
				
				System.out.println("Wie alt bist du?");
				typ.alter = scan.nextInt();
				assert typ.alter >= 18 : "Mach dich ab, du Milchbubi!";
				
				System.out.println("Wie ist dein Trinkverhalten");
				typ.trinkverhalten = scan.nextLine();
				typ.trinkverhalten = scan.nextLine();
				
				System.out.println("Das bist du:");
				System.out.println(typ.toString());
 
Zuletzt bearbeitet:

Zet

Aktives Mitglied
1. OT: warum schließt ihr euch nicht mal alle zusammen, wenn man die letzten Themen so betrachtet haben hier einige das ein und selbe Problem, ich gehe mal davon aus das ihr alle gewisse Studienaufgaben bewältigen sollt?

2.
oftmals wird bei einer Nutzereingabe scan.nextLine() übersprungen
wann ist denn oftmals? Lauf doch mal mit einem Debugger durch deinen Code und beobachte dabei die Variablen.
Wobei bei mir dein Code genau das tut was er scheinbar soll, und das auch mit einem einfachen scan.nextline();

besteht das Problem noch? :)


Grüße
Zet
 

PascalC

Mitglied
Ja, das Problem besteht noch und tritt immer nur bei nextLine, aber nie bei nextInt oder nextDouble auf. Es scheint hauptsächlich aufzutreten, wenn vorher schon eine Nutzereingabe stattgefunden hat. Anscheinend wartet das Programm (Eclipse) nicht bis eine Eingabe stattfindet, sondern verwertet einfach eine Vorhergegangene.

Deshalb meine Frage ob es eine andere Klasse gibt, die dies besser löst. Ich kenne bisher leider nur Scanner.
 

Zet

Aktives Mitglied
nextLine liest bis zum nächsten Zeilenende.

Da du zur Eingabe der Zahl mit Return bestätigen musst liest nextInt()die Zahl und nextLine() nur bis Zeilenumbruch nach der Zahl - also nichts.
Gib einfach mal
Wie alt bist du?
--> 21 habekeintrinkverhalten ein, dann wird Dir 21 als Alter und sofort habekeintrinkverhalten als trinkverhalten ausgegeben.
next() wartet auf die Eingabe eines Strings.

==
Alter Code:
Java:
        Scanner scan = new Scanner(System.in);
        Spieler typ = new Spieler(null, 0, null, 0);
        System.out.println("Wie heißt du?");
        typ.name = scan.nextLine();
        System.out.println("Wie alt bist du?");
        typ.alter = scan.nextInt();
        assert typ.alter >= 18 : "Mach dich ab, du Milchbubi!";
        System.out.println("Wie ist dein Trinkverhalten");
        typ.trinkverhalten = scan.nextLine();
        System.out.println("Das bist du:");
        System.out.println(typ.toString());



// Console:
Wie heißt du?
Peter Pan
Wie alt bist du?
100 Ich habe kein trinkverhalten, ich werde nie erwachsen.
Wie ist dein Trinkverhalten
Das bist du:
Peter Pan 100  Ich habe kein trinkverhalten, ich werde nie erwachsen. 0

Durch das ersetzen von scan.nextline() durch scan.next() kannst du das Problem lösen, wenn ich das Problem überhaupt richtig verstanden habe. :oops:


Edith: btw, assert mag nicht so richtig, oder?
 
Zuletzt bearbeitet:

PascalC

Mitglied
Ja, super. Das Ersetzen durch next hat geklappt. Vielen Dank für die Hilfe :)

Die Assertzuweisung funktioniert, ich musste Sie halt erst in Eclipse umständlich aktivieren. Da dies nicht über den Code geht, wird sie wenn man das Programm kopiert und ausführt nicht greifen ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Alternative zu Stream.forEach() Java Basics - Anfänger-Themen 6
T Alternative für switch case Java Basics - Anfänger-Themen 1
S Input/Output System.out.println - Manipulieren bzw. Alternative..? Java Basics - Anfänger-Themen 2
H Alternative Eingabe Java Basics - Anfänger-Themen 3
N Alternative für mehrdimensionales Array Java Basics - Anfänger-Themen 25
K Alternative zur If-Abfrage Java Basics - Anfänger-Themen 3
N Benötige eine Alternative für einen GOTO Befehl Java Basics - Anfänger-Themen 2
E Brauche eine Antwort zum Thema RegEx ( Alternative zur Lösung auch gesucht ) Java Basics - Anfänger-Themen 5
I Input/Output Alternative zur Serialisierung/ ImageJ Objecte Java Basics - Anfänger-Themen 7
O Alternative zum swing-Timer Java Basics - Anfänger-Themen 5
kaoZ Alternative zu ToggleButton (Android/Java) Java Basics - Anfänger-Themen 12
H Best Practice Alternative Möglichkeit, um Eingaben vorzunehmen Java Basics - Anfänger-Themen 13
M renameTo alternative? Java Basics - Anfänger-Themen 11
A Alternative zum manuellen Swing programmieren?? Java Basics - Anfänger-Themen 4
J alternative zu getText() ? Java Basics - Anfänger-Themen 15
lulas[]args Alternative zu System.err.println(); Java Basics - Anfänger-Themen 5
xehpuk (Sichere) Alternative zu Class.forName() Java Basics - Anfänger-Themen 9
F Alternative zu JoptionPane Java Basics - Anfänger-Themen 7
A Alternative instanceof Java Basics - Anfänger-Themen 3
DStrohma Alternative Darstellung von Paketen in Eclipse Java Basics - Anfänger-Themen 2
S Datentypen LinkedList Konstruktor, add Alternative Java Basics - Anfänger-Themen 2
B Alternative zu einem Array gesucht Java Basics - Anfänger-Themen 3
S Webapplikation welche alternative zu gwt? Java Basics - Anfänger-Themen 2
S Alternative Implementierungen für ActionListener Java Basics - Anfänger-Themen 7
E Strings hochzählen oder elegante alternative? Java Basics - Anfänger-Themen 3
hdi Alternative zu JTextArea? Java Basics - Anfänger-Themen 3
F Java Native Interface alternative Java Basics - Anfänger-Themen 4
M Erneutes Ausführen bestimmter Aktionen (GoTo-Alternative) Java Basics - Anfänger-Themen 6
C Alternative zur Klasse Java Basics - Anfänger-Themen 2
R Alternative zu "Format" in Java 1.4 Java Basics - Anfänger-Themen 3
R String replace nicht verwenden.alternative gesucht Java Basics - Anfänger-Themen 5
V Alternative zu Thread.sleep() ? Java Basics - Anfänger-Themen 6
G Alternative zu Split für 1.3 Java Basics - Anfänger-Themen 3
monsterherz Replace mit Scan Java Basics - Anfänger-Themen 20
Poppigescorn scan.nextInt() wiederholen bis eine Zahl eingeben wird Java Basics - Anfänger-Themen 7
H Kürzere Scan Methode Java Basics - Anfänger-Themen 7
A Double Scan eingrenzen Java Basics - Anfänger-Themen 2
K Frage zu scan nextln Java Basics - Anfänger-Themen 6
R Einzelne Zahlen von der Eingabe (Scan) weiterverarbeiten Java Basics - Anfänger-Themen 3
A scan.nextLine() - Wenn man zu lange nichts macht, soll etwas passieren Java Basics - Anfänger-Themen 3
K scan.nextLine Java Basics - Anfänger-Themen 5
H Scanner nextLine() bringt Dateipfad Java Basics - Anfänger-Themen 1
T j.u.Scanner(Sys.in).nextLine() wieder schließen? Java Basics - Anfänger-Themen 5
V Bedeutung von xxx.nextline() Java Basics - Anfänger-Themen 3
F Scanner - nextLine() gibt leeren String zurück Java Basics - Anfänger-Themen 2
G Strings mit Scanner (nextLine) einlesen Java Basics - Anfänger-Themen 7
gstarplayer [Verständnisprobleme] Java next(),nextLine,nextInt und parseInt! Java Basics - Anfänger-Themen 22
K .nextLine() Java Basics - Anfänger-Themen 5
M .nextLine() wird übersprungen Java Basics - Anfänger-Themen 6
S Input/Output nextLine() Problem Java Basics - Anfänger-Themen 4
Z NoSuchElementException - Scanner.nextLine() Java Basics - Anfänger-Themen 4
S NullPointerException beim Checkbox-Label-Array mit nextLine() Java Basics - Anfänger-Themen 6
N Scanner next() oder nextLine() zur prüfung auf leere Eingabe... Java Basics - Anfänger-Themen 6
G warum überspringt er sc.nextLine()? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben