Java : Warum wartet der Scanner nicht auf meine Eingabe?
Hallo,
Gebt mal folgenden Code bei euch ein und startet :
package Lernen;
import java.util.Arrays;
import java.util.Scanner;
public class CarSeller {
int rColor = (int)(Math.random()*9);
int color;
int ps;
int mark;
String color2;
String ps2;
String mark2;
String[] colorArray = new String[10];
public void price(int color, int ps, int mark) {
this.color = color;
this.ps = ps;
this.mark = mark;
}
public int RandomColor() {
System.out.println(colorArray[rColor]);
return 1;
}
public static void main(String[] args) {
CarSeller acess = new CarSeller();
acess.colorArray[0] = "Black";
acess.colorArray[1] = "Green";
acess.colorArray[2] = "Red";
acess.colorArray[3] = "Orange";
acess.colorArray[4] = "Blue";
acess.colorArray[5] = "Cyan";
acess.colorArray[6] = "White";
acess.colorArray[7] = "Brown";
acess.colorArray[8] = "Yellow";
acess.colorArray[9] = "Grey";
System.out.println("Hey, what do you want to do ? | BUYCAR | DRIVE | GOINHOUSE | BUYPLOTS | REFUEL | QUIT |");
Scanner start = new Scanner(System.in);
if (start.equals("BUYCAR")) {
System.out.println("What car do you want to buy? | Lamborghini | Porsche | VW | Mercedes | BMW | Tesla | CANCEL|");
Scanner a = new Scanner(System.in);
if (a.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());
}
}
}
}
}
Bei mir wartet der irgendwie nicht auf eine Eingabe... Wie behebe ich diesen Fehler ?
3 Antworten
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.
Übrigens kommt dann das : 'equals' between objects of inconvertible types 'Scanner' and 'String'
Hey,
du initialisiert den Scanner zwar aber du nutzt ihn nie.
Schau mal hier mach, wie man diesen richtig benutzt.
So ? Scanner start = new Scanner(System.in);
String startScan = start.next();
Jup, ich persönlich bevorzuge jedoch Scanner#nextLine() anstatt Scanner#next()
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
Aber wie kann ich den immer wieder benutzen ?
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
Danke ! Wie findest du diese Java Tutorials ? https://studyflix.de/informatik/input-und-output-eines-programms-219
Kriegst auf jeden Fall nen Stern ! :)
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
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...
ist „startScan“ denn auch ein String oder ist das die Instanz deines Scanners?
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.
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.
So ?
Scanner start = new Scanner(System.in);
String startScan = start.next();
sieht so aus
https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html
einfach mal selber gucken bei den classen . steht doch alles schon im internet . einfach mal schlau sein und nutzen .
Das war übrigens das ganze Projekt bis jetzt....