Warum kann ich nicht eine Zeichenfolge eingeben, die in der Scanner(System.in), die beim aufrufen nextLine - ()-Methode?
Wie funktioniert dieses Programm eigentlich funktionieren...?
import java.util.Scanner;
class string
{
public static void main(String a[]){
int a;
String s;
Scanner scan = new Scanner(System.in);
System.out.println("enter a no");
a = scan.nextInt();
System.out.println("no is ="+a);
System.out.println("enter a string");
s = scan.nextLine();
System.out.println("string is="+s);
}
}
Ausgabe:
enter the no
1234
no is 1234
enter a string
string is= //why is it not allowing me to enter a string here?
- In java-Klassennamen für gewöhnlich mit einem Großbuchstaben beginnen - aber ich würde dringend davon abraten aufrufen der Klasse "String".
- möglich, Duplikat der Warum nicht diese for-Schleife lassen Sie mich Texteingabe in der ersten Zyklus?
- Auch, um diesen code zu kompilieren, müssen Sie ändern Sie die parameter der main-Methode auf etwas anderes als eine.
Du musst angemeldet sein, um einen Kommentar abzugeben.
.nextInt()
bekommt die nächsteint
, aber nicht Lesen, das neue-Zeile-Zeichen. Dies bedeutet, dass, wenn Sie bitten, es zu Lesen "nächste Zeile" Lesen Sie bis zum Ende des neue-Zeile-Zeichen aus der ersten Zeit.Können Sie legen Sie eine andere
.nextLine()
nachdem Sie dieint
dieses Problem zu beheben. Oder (ich bevorzuge diesen Weg), Lesen Sie dieint
alsstring
, und analysieren Sie diese, um eineint
.Dies ist ein häufiges Missverständnis, das führt zu Verwirrung, wenn Sie verwenden Sie den gleichen Scanner für nextLine - () nach rechts, nachdem Sie verwendet nextInt().
Können Sie entweder fix der cursor springt in die nächste Zeile, indem Sie sich selbst oder nutzen Sie einfach einen anderen scanner für Ihre Zahlen.
OPTION A: verwenden Sie 2 verschiedene Scanner
OPTION B: springen Sie einfach in die nächste Zeile
Müssen Sie nur
scan.next()
zu LesenString
.Dies ist, weil nach dem nextInt() beendet es die Ausführung, bei der die nextLine - () - Methode aufgerufen, durchsucht Sie das neue-Zeile-Zeichen, die anwesend war, nachdem die nextInt(). Sie können dies auf eine der folgenden Arten:
Können Sie verwenden Sie die nächste Methode auf das scanner-Objekt als
scan.next();
Scanner ist der Puffer voll, wenn wir einen input-string durch Scannen.nextLine - ();
so springt die Eingabe zum nächsten mal .
So Lösung ist, dass wir können ein neues Objekt erstellen, von Scanner , wird der name des Objekts kann das gleiche sein
als Vorheriges Objekt......
Versuchen Sie nicht, Scannen Sie text mit nextLine - (); NACH der Verwendung von nextInt() mit dem gleichen scanner! Es funktioniert nicht gut mit Java-Scanner, und viele Java-Entwickler entscheiden, verwenden Sie einfach einen anderen Scanner für ganze zahlen. Nennen Sie können diese Scanner scan1 und scan2, wenn Sie wollen.
verwenden temporäre
scan.nextLine();
dieser verbraucht das \n-Zeichenwenn Sie nicht möchten, verwenden Sie parser :
Incase Sie don ' T verwenden möchten nextint können Sie auch mit buffered reader, wo mit
inputstream
undreadline
- Funktion Lesen Sie die Zeichenfolge.Einfache Lösung zu konsumieren, das \n-Zeichen:
Gibt es Eingabe übersprungen wurde.
so, dass Sie möglicherweise verwenden