Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
sich wiederholende arrayfelder ersetzen for-schleife
import java.util.Arrays;
import java.util.Random;
import java.util.ArrayList;
public class Lotto {
Random million;
int[] gezogen = new int[6];
Lotto() {
this.million = new Random(5);
}
int[] ziehen() {
for (int i = 0; i < 6; i++) {
int j = 0;
gezogen[i] = this.million.nextInt();
int k = gezogen[i];
pruefe(gezogen, k);
if (gezogen[i] < 0) {
gezogen[i] = gezogen[i] * (-1);
gezogen[i] = (gezogen[i] % 49) + 1;
} else {
gezogen[i] = (gezogen[i] % 49) + 1;
}
}
return gezogen;
}
void ausgeben() {
for (int z = 0; z < 6; z++) {
System.out.print(" " + (gezogen[z]));
}
}
void pruefe(int[] array, int k) {
for (int z = 0; z < 6; z++) {
if (array[z] == k) {
array[z] = this.million.nextInt();
array[z]=(gezogen[z] % 49) + 1;
}
}
}
public static void main(String[] args) {
Lotto Spieler1 = new Lotto();
Spieler1.ziehen();
Spieler1.ausgeben();
}
}
ich will dass meine doppelten zahlen, einfach durch neue zufallszahlen ersetzt werden, das habe ich versucht mit der methode pruefe umzusetzen aber irgendwie klappt es nicht.
weiß jemand was ich falsch mache.
random(3) ist mit absicht, damit er die selben zahlen ausgibt, damit ich kontrollieren kann ob er sie auch irgendwann ändert.
aber es werden immer noch nich doppelte zahlen ersetzt.
hoffe jemand weiß weiter.
benutze für dein int[] einfach eine ArrayList und überprüfe, wenn du die zufallszahlen einfügst mit contains(), ob die Zahl schon drin ist und solange das der fall ist, soll er sich immer wieder ne neue zahl suchen
Am Einfachsten geht diese Lotto-Geschichte imo, dass man sich in eine Liste alle Zahlen von 1-49 steckt und mittels Collections.shuffle diese einfach willkürlich durchmischt (so wie es in der Realität ja auch gemacht wird) und sich dann einfach die ersten 6 Zahlen rauszieht:
Java:
// Liste mit Zahlen 1-49
LinkedList<Integer> topf = new LinkedList<Integer>();
for (int i = 1; i <= 49; i++) {
topf.add(i);
}
//Topf mischen
Collections.shuffle(topf);
//neue Liste für die gezogenen Zahlen
LinkedList<Integer> zahlen = new LinkedList<Integer>();
for (int j = 0; j < 6; j++) {
zahlen.add(topf.get(j));
}
//Zahlen sortieren
Collections.sort(zahlen);
//Zaahlen ausgeben
System.out.println(zahlen);
Dankeschön für die Hilfe!
Wir sollten das halt mit dem Einsatz der oben eingeführten packages machen.Deshalb erscheint mein Ansatz vll umständlich.Oder in welcher Klasse is LinkedListe zu hause das wäre eine sehr schöne Lösung
(2)
Schreiben Sie ein Programm, das die Ziehung der Lottozahlen (6 Zahlen zwischen 1 und 49) realisiert (siehe Klasse java.util.Random).
import java.util.Random;
import java.util.ArrayList;
import java.util.Arrays;
public class Lotto {
Random zahlen= new Random();
ArrayList klar=new ArrayList();
int k;
void ziehen(){
for(int z=0;z<6;z++){
k=zahlen.nextInt();
k=(k%49);
klar.add(k); // soll gucken ob, element in der arraylist vorhanden oder <0
if(klar.contains(k)||k<0){
k=zahlen.nextInt();
}
}
}
public static void main(String[] args) {
Lotto Spieler1 = new Lotto();
Spieler1.ziehen();
IO.println(Spieler1.k);
IO.println("lottozahlen : ");
for(int j=0;j<6;j++){
System.out.print("|"+Spieler1.klar.get(j)+"|");
}
}
}
habe das jetzt versucht mit Arraylist umzusetzen , geht aber immer noch nicht, bekomme immer noch doppelte Werte oder Werte im negativen Bereich ;(;( Is auch irgendwo logisch , da die Werte zufällig generiert werden.Aber wie dann ?
so hier meine Lösung , danke für eure Tipps
habe das jetzt mit Arraylist umgesetzt , war einfacher als ich dachte
Java:
import java.util.Random;
import java.util.ArrayList;
public class Lotto {
Random zahlen = new Random();
ArrayList klar = new ArrayList(); // Anlegen einer Arraylist, array wäre auch möglich, ist aber ja egal :)
int k;
void ziehen() {
for (int z = 0; z < 6; z++) {
while(k<=0||klar.contains(k)){ // solange die zahl kleiner 0 und schon in der arraylist ist, soll eine neue Zahl gesucht werden
k = zahlen.nextInt();
k = (k % 49)+1;
}
klar.add(k);
}
}
// Ausgabe der gezogenen Zahlen im Testprogramm
public static void main(String[] args) {
Lotto Spieler1 = new Lotto();
Spieler1.ziehen();
IO.println("Ihre lottozahlen : ");
for (int j = 0; j < 6; j++) {
System.out.print("|" + Spieler1.klar.get(j) + "|");
}
}
}