Java: Wie kann ich erreichen, dass keine doppelten Zahlen ausgegeben werden?
Hallo,
ich habe ein Java-Programm und möchte das dabei keine doppelten Zahlen ausgegeben werden.
Hier erst einmal mein Programm:
public class Lotto {
public static void main(String[] args) {
if (args.length == 2) {
int[] feld = new int[6];
feld[0] = (int)(Math.random() * 49) + 1;
feld[1] = (int)(Math.random() * 49) + 1;
feld[2] = (int)(Math.random() * 49) + 1;
feld[3] = (int)(Math.random() * 49) + 1;
feld[4] = (int)(Math.random() * 49) + 1;
feld[5] = (int)(Math.random() * 49) + 1;
for (int i = 0; i < feld.length - 1; i++) {
System.out.print(feld[i] + ", ");
}
System.out.println(feld[5]);
}
else System.out.println("ERROR");
}
}
3 Antworten
Am einfachsten geht es wie folgt:
Erstelle eine Liste aller möglichen Zahlen, und dann nimm 6 zufällige Zahlen raus.
Sind 3 Zeilen Code:
int[] result = new int[6];
List<Integer> possibleNumbers = IntStream.range(1, 50).boxed().collect(Collectors.toList());
for (int i = 0; i < 6; i++) result[i] = possibleNumbers.remove((int)(Math.random() * possibleNumbers.size()));
feld [0] = (int)(Math.random() * 49) + 1;
also erstmal die zufalls zahl ermitteln , die zwischen speichern .
dann gucken ob sie im array vorkommt .
wenn NEIN dann an freier (letzte freie position) speichern , darauf achten das nach array größe auch schluss ist .
kann man also z.b. mit einer while schleife und entsprechenden bedingungen gut umsetzen.
hier mal eine möglichkeit , die kann man natürlich noch kompeltt optimieren , aber für den anfang ist es einfacher , schritt für schritt zu lernen .
pseudocode :
neuestelle = 0;
zufallzahlerzeugen = true;
while(zufallzahlerzeugen) {
meinezufallszahl = (int)(Math.random() * 49) + 1;
/* hier entweder eine array suchfunktion oder via for schleife arbeiten ) */
zufallgefunden = false;
for (i=0 ; i < array.length; i++) {
if (array[i] == meinezufallszahl) {
zufallgefunden = true;
}
}
if ( !zufallgefunden) { /* ! negiert die aussage so ds wir nur was machen wenn keine zufallszahl gefunden wurde */
array[neuestelle] = meinezufallszahl;
++neuestelle;
}
if (neuestelle == array.length ) {
zufallzahlerzeugen = false;
}
}
Du schreibst eine Schleife.
Ist die ermittelte Zufallszahl nicht im Array vorhanden, wird diese zum Array hinzugefügt, bis das Array voll ist.