Java: Zufallszahlen erraten?
Moin, ich möchte ein Ratespiel erstellen, wo man 4 Zufallszahlen raten soll. Nur leider bekomme ich bei der Kompilierung immer diesen Fehler: "Mastermind.java:64: error: class, interface, or enum expected".
Hier mein Code:
import java.util.Random;
import java.util.Scanner;
public class Mastermind {
public static void main(String [] args) {
int[] zahlen = new int[4];
int x = 0;
boolean flag = false;
for (int i=0; i<zahlen.length; i++){
do{
x = (int)(Math.random()*8)+1;
flag = false;
for (int j=0; j<zahlen.length; j++) {
if (zahlen [j] == x) {
flag = true;
break;
}
}
}
while(flag);
zahlen[i] = x;
}
for (int i=0; i<zahlen.length; i++)
System.out.println(zahlen[i]);
}
public void readChars() {
Scanner input = new Scanner(System.in);
System.out.println("Bitte raten Sie die Zahlen");
String eingabe = input.next();
System.out.println(eingabe);
if(eingabe == zahlen[i]) {
System.out.println("Das ist korrekt");
}
else if (eingabe > zahlen[i]) {
System.out.println("Ihre Eingabe ist zu hoch");
}
else {
System.out.println("Ihre Eingabe ist zu niedrig");
}
}
}
}
}
2 Antworten

Bitte den Code ordentlich formatieren, sonst ist das nicht wirklich lesbar.
Der Fehler deutet drauf hin, dass deine Klasse entweder ein Interface etc. implementieren muss, oder, was ich hier für am wahrscheinlichsten halte, dass du bei der Klammersetzung der geschweiften Klammern einen Fehler drin hast.
Ich komme beim Zählen der Klammern auf 10 öffnende { und 12 schließende }.
Die Zahlen sollten aber gleich sein.

Ich hab den Code gerade mal formatiert und in deiner Methode readChars() ist für i kein Wert gesetzt in den if-Anweisungen und er erkennt das zahlen[] Array nicht in der Methode.

Naja das i soll ja eigentlich die Zufallszahl darstellen, die am Anfang generiert wurde. Warum sollte ich der einen Wert geben. Sie besitzt ja dann schon einen zufälligen Wert. Sorry, bin ein Anfänger. Vielleicht kannst du den Code ja kurz bearbeiten, bis er funktioniert, wäre super nett.

Dann musst du das i einfach der Methode übergeben, bzw. das zahlen[] Array. Ansonsten "kennt" die Methode diese Werte ja nicht.

Achja und aufrufen müsstest du sie auch im Hauptprogramm, also in der main() Methode.
Für so ein kleines Programm ist es dann vielleicht aber sinnvoller das gleich komplett ohne weitere Methoden zu machen, weil die keinen Nutzen bringen und nur unnötig Komplexität erzeugen und eben alles direkt in die main().

Wir sollen die Methoden aber leider benutzen. Wenn ich readChars(zahlen[i]) eingebe, kommen trotzdem wieder Fehler.
λ javac Mastermind.java
Mastermind.java:46: error: ']' expected
public void readChars(zahlen[i]) {
^
Mastermind.java:46: error: ',', ')', or '[' expected
public void readChars(zahlen[i]) {
^
Mastermind.java:65: error: reached end of file while parsing
}
^
3 errors

Hm du kannst mir ja mal die Aufgabe schicken, die ihr machen sollt und ich kann die ja mal machen und dir die Musterlösung dann schicken. Jetzt hier so eine Fehlersuche ist eher nicht so ..

Bis auf die Kleinigkeit, dass es zu den zwei letzten öffnenden geschweiften Klammern keine schließenden gibt sieht das ganz syntaktisch soweit in Ordnung aus.

Ach verdammt, tausche die Positionen der Worte "öffnende" und "schließende" gegeneinander aus, dann passts. ^^;;


Okay, habe die beiden letzten geschweiften Klammern entfernt. Nun bekomme ich diese Meldung: Mastermind.java:65: error: reached end of file while parsing
Zeile 65 ist die letzte Zeile (also die letzte geschweifte Klammer)
Okay, habe die beiden letzten geschweiften Klammern entfernt. Nun bekomme ich diese Meldung: Mastermind.java:65: error: reached end of file while parsing
Zeile 65 ist die letzte Zeile (also die letzte geschweifte Klammer)