Hi erstmal, also ich bin gerade erst mit Java angefangen und wollte ein Lottospiel programmieren, wo man halt 6 Zahlen eingibt+ 6 Zahlen generiert werden und diese dann verglichen werden. Bloß hab ich irgend ein Fehler in der Auswertung und ich find ihn einfach nicht und da wollt ich mal eure Meinungen zu hören. Tipps zum anders bzw besser programmieren sind natürlich gewünscht.
hier mein code + fehlermeldung
Die Fehlermeldung
hier mein code + fehlermeldung
Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Lotto {
static int[] lottozahlen = new int[6];
static int[] werte = new int[6];
static int zaehler = 0;
static boolean trefferSchleifenAbbruch = true;
public static void lottoZufall() {
int i;
int zaehler;
// --------------------------------------------------------------
// Die Schleife schreibt 6 mal eine neue zufallszahl in das array
// --------------------------------------------------------------
for (zaehler = 0; zaehler < 6; zaehler++) {
lottozahlen[zaehler] = (int) (Math.random() * 49) + 1;
// -----------------------------------------------------------
// Dublikattest ( es wird auf gleiche Zahlen im Array geprüft)
// -----------------------------------------------------------
for (i = 0; i < zaehler; i++) {
// --------------------------------------------------------------
// i ist quasi eine stelle zurück und wird immer mit der
// nächsten aus zaehler verglich . sollte es vorkommen, dass
// beide gleich sind, gibt es eine doppelte zahl im array. diese
// wird dann überschrieben
// --------------------------------------------------------------
while (lottozahlen[zaehler] == lottozahlen[i]) {
lottozahlen[zaehler] = (int) (Math.random() * 49) + 1;
// ------------------------------------------------
// Bei Übereinstimmung soll der vergleich von vorne
// beginnen, deshalb i = 0
// -------------------------------------------------
i = 0;
}
}
}
}
public static void eingabe() {
// --------------------
// Komandozeileneingabe
// --------------------
System.out.print("Lottozahlen eingeben: ");
String chars = "";
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
chars = br.readLine();
} catch (IOException ex) {
ex.printStackTrace();
}
// ---------------------------------------------------------------------
// da man ein stringarray nicht ohne weiteres in ein int array parsen
// kann. läuft eine schleife über jedes feld im stringarray und parst es
// einzelnt in ein int array
// ---------------------------------------------------------------------
String[] zahlen_s = chars.split(" ");
int[] zahlen = new int[zahlen_s.length];
for (int i = 0; i < zahlen_s.length; i++) {
try {
// -------------------------------------------
// versucht den string zu einem int zu wandeln
// -------------------------------------------
zahlen[i] = Integer.parseInt(zahlen_s[i]);
werte[i] = zahlen[i];
}
// ----------------------------------
// klappt das nicht -> fehlermeldung
// ----------------------------------
catch (NumberFormatException nfex) {
System.out.println("Nur Zahlen eingeben!!");
}
}
}
public static void auswertung() {
for (int i = 0; i < werte.length; i++) {
trefferSchleifenAbbruch = true;
for (int e = 0; i < lottozahlen.length - 1 && trefferSchleifenAbbruch == true; e++) {
if (werte[i] == lottozahlen[e]) {
zaehler = zaehler + 1;
trefferSchleifenAbbruch = false;
}
}
}
}
public static void main(String[] args) {
lottoZufall();
eingabe();
auswertung();
// ----------------------------------------------------------------
// Ausgabe der eingegebenen Zahlen sowie Lottozahlen und Auswertung
// ----------------------------------------------------------------
System.out.print("Ihre eingegeben Zahlen : ");
for (int a = 0; a < 6; a++) {
System.out.print(werte[a] + " ");
}
System.out.println();
System.out.print("Die Lottozahlen lauten : ");
for (int i = 0; i < 6; i++) {
System.out.print(lottozahlen[i] + " ");
}
System.out.println("Sie haben " + zaehler + " Treffer.");
}
}
Die Fehlermeldung
Java:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6
at Lottozahlen.auswertung(Lottozahlen.java:179)
at Lottozahlen.main(Lottozahlen.java:209)