Fehler im Code?
Hey Leute,
Mir wird im Code andauern der gleiche Fehler rausgeschmissen, kann mir da wer helfen?
Hier der Code:
import java.util.Random;
public class aufgabe14 {
public static void main(String[] args) {
Random rand = new Random();
int target = rand.nextInt(100) + 1;
int count = 0;
int maxTries = 10;
int guess;
System.out.println("Rate eine Nummer zwischen 1 und 100!");
do {
guess = Integer.parseInt(System.console().readLine());
count++;
if (guess > target) {
System.out.println("Du hast zu hoch geraten!");
} else if (guess < target) {
System.out.println("Du hast zu niedrig geraten!");
}
} while (guess != target && count < maxTries);
if (guess == target) {
System.out.println("Du hast die nummer in " + count + " versuchen erraten!");
} else {
System.out.println("Du hast versagt die nummer in " + maxTries + " versuche zu erraten!");
}
}
}
Kannst du den Fehler auch zeigen?
Rate eine Nummer zwischen 1 und 100!
Exception in thread "main" java.lang.NullPointerException
at aufgabe14.main(aufgabe14.java:13)
Process finished with exit code 1
das ist der error
3 Antworten
Ich denke es liegt daran, dass das
System.console().readLine()
dir Null returned.
Versuch mal die Eingabe mit einem scanner einzulesen.
Mehr dazu hier: https://www.w3schools.com/java/java_user_input.asp
ups ich sehe grade, dass es schon beantwortet wurde, irgendwie hab ich das übersehen
Aber den link könntest du dir trotzdem denke ich mal anschauen für zukünftige Aufgaben
IDE's wie Eclipse nutzen in der Regel ihre eigene Konsolenimplementation, auf die du über System.console() keinen Zugriff hast. Stattdessen bekommst du in diesem Kontext den Wert null zurück.
Führe das Programm entweder in dem klassischen Konsolenprogramm deines OS aus oder verwende prinzipiell für das Einlesen von Konsoleneingaben eine Scanner-Instanz.
Beispiel:
Scanner reader = new Scanner(System.in);
int someNumber = reader.nextInt();
String someText = reader.nextLine();
Der Code ist ungetestet, aber so kann man den scanner wahrscheinlich am einfachsten implementieren:
import java.util.Random;
import java.util.Scanner;
public class aufgabe14 {
public static void main(String[] args) {
Random rand = new Random();
int target = rand.nextInt(100) + 1;
int count = 0;
int maxTries = 10;
int guess;
System.out.println("Rate eine Nummer zwischen 1 und 100!");
Scanner input = new Scanner(System.in);
do {
guess = input.nextInt();
count++;
if (guess > target) {
System.out.println("Du hast zu hoch geraten!");
} else if (guess < target) {
System.out.println("Du hast zu niedrig geraten!");
}
} while (guess != target && count < maxTries);
if (guess == target) {
System.out.println("Du hast die nummer in " + count + " versuchen erraten!");
} else {
System.out.println("Du hast versagt die nummer in " + maxTries + " versuche zu erraten!");
}
}
}
Wenn du das Programm exportierst, und es so ausführst sollte es funktionieren.
"Java.io.Console" ist in Eclipse, IntelliJ, und Anderen IDE-Konsolen nicht verfügbar.
In meiner Windows Console funktioniert es ohne Probleme: