Java : Warum wartet der Scanner nicht auf meine Eingabe?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
Gebt mal folgenden Code bei euch ein und startet :

Geht nicht, weil wir dafür den Rest vom Projekt brauchen. Aber egal.

Der Scanner wird gar nicht erst abgefragt, wenn ich das richtig sehe. Du deklarierst zwar viele viele Scanner, aber eigentlich brauchst Du nur einen einzigen.

Scanner scannerVariable = new Scanner(System.in);

Damit deklarierst Du einen Scanner.

variable = scannerVariable.nextLine();

Damit nutzt Du ihn. "variable" am Anfang kann beispielsweise colorChoose sein.

Mythxx103 
Fragesteller
 28.11.2021, 14:48

Übrigens kommt dann das : 'equals' between objects of inconvertible types 'Scanner' and 'String'

0

Hey,

du initialisiert den Scanner zwar aber du nutzt ihn nie.

Schau mal hier mach, wie man diesen richtig benutzt.

https://www.baeldung.com/java-scanner

Woher ich das weiß:eigene Erfahrung – Aktuelles Studium in angewandter Informatik
Mythxx103 
Fragesteller
 28.11.2021, 14:50
So ? Scanner start = new Scanner(System.in);
String startScan = start.next();
0
JanMarcel01  28.11.2021, 14:58
@Mythxx103

Jup, ich persönlich bevorzuge jedoch Scanner#nextLine() anstatt Scanner#next()

1
JanMarcel01  28.11.2021, 14:59
@Mythxx103

Zudem reicht es, wenn du zu Beginn einen einzigen Scanner registrierst, diesen kannst du dann für die ganze Klasse nutzen und brauchst nicht für jeden Input einen neuen Scanner initialisieren

1
JanMarcel01  28.11.2021, 15:25
@Mythxx103
Scanner scanner = new Scanner(System.in);
String input1 = scanner.nextLine();
// irgendwelcher Code
String input2 = scanner.nextLine();

so kannst du die selbe Scanner Instanz mehrfach nutzen

1
JanMarcel01  28.11.2021, 15:31
@Mythxx103

Müsste ich mir genauer anschauen.

Ich persönlich habe Java mit Hilfe eines Udemy Kurses und des Buches „Java ist auch eine Insel“ (als Begleitbuch für ein tiferes Verständnis von gewissen Dingen) gelernt. Hat für mich sehr gut funktioniert

1
Mythxx103 
Fragesteller
 28.11.2021, 15:35
@JanMarcel01
Danke, geht irgendwie nicht : 
if (startScan.equals("BUYCAR")) {
    System.out.println("What car do you want to buy? | Lamborghini | Porsche | VW | Mercedes | BMW  | Tesla | CANCEL|");
    String input1 = start.nextLine(); // HIER
    if (input1.equals("Lamborghini")) {

          CarSeller Lamborghini = new CarSeller();
          System.out.println("Which color do you want ? | Choose one ");
          System.out.println(Arrays.toString(acess.colorArray));
          System.out.println("Or do you want a random color ? | Random");
          Scanner colorchoose = new Scanner(System.in);
          if (colorchoose.equals("Random")) {
              System.out.println(acess.RandomColor());
          }

Der wartet auf keine Eingabe...
0
JanMarcel01  28.11.2021, 20:01
@Mythxx103

ist „startScan“ denn auch ein String oder ist das die Instanz deines Scanners?

1
regex9  28.11.2021, 20:42
@Mythxx103

Die Variable colorchoose zeigt auf ein Scanner-Objekt. Das kann also nicht gleich mit einem String sein.

if (colorchoose.equals("Random")) {

Das Gleiche gilt vermutlich für deine erste Zeile.

1

https://stackoverflow.com/questions/30612811/what-does-scanner-input-new-scannersystem-in-actually-mean#:~:text=It%20is%20a%20standard%20Oracle,Scanner%20.&text=Now%20when%20you%20call%20Scanner,it%20in%20the%20variable%20input%20.

Scanner input = new Scanner(System.in);

Creates a new object of type 

Scanner

 from the standard input of the program (in this case probably the console) and

int i = input.nextInt()

uses the 

nextInt

 Method of that object, which allows you to enter some text and it will be parsed into an integer.