Lotto mit Arrays schreiben

Zitrus

Bekanntes Mitglied
Java:
package lotto;

public class lotto {

	public static void main(String[] args) {
		liesZahlen();
	}

	public static void liesZahlen() {
		int[] b = new int[49];
		int counter = 0;
		int c = 0;

		for (int i = 0; i < b.length; i++) {
			b[i] = ++c;
		}

		for (int e = 0; e < 6; e++) {
			int d = (int) (Math.random() * 49) + 1;
			System.out.println(++counter + ": " + b[d]);
		}

	}
}

Hallo,
Ich versuche gerade 6 Zahlen auszugeben und dabei Arrays zu verwenden. Mein Problem ist, dass ich nach jedem ausgeben überprüfen muss ob die Zahl den selben Wert wie eine bereits ausgegebene Zahl hat. Ich könnte es zwar lösen mit:

if(d == b[1] | d == b [2] ... | d == b[49])

Jedoch kommt mir dieser Weg sehr unpraktisch vor und ich bin mir sicher dass es einen besseren Weg gibt! (Bitte keine Lösungen/Ansätze mit shuffle)

Mfg, Zitrus
 
Mein Vorschlag (ungetestet):

Java:
boolean[]pot = new boolean[49];
		
		int[]pickedNumbers = new int[6];
		int count = 0;
		
		for(boolean b : pot){
			b = false;
		}
		
		
		int choice;
		Random r = new Random();
		for(int i = 0; i<=6;i++){
			choice = r.nextInt();
			
			if(pot[choice]==false){
				i--;
			} else {
				pot[choice]=true;
				pickedNumbers[count] = choice;
				count++;
			}
		}

Du musstest nochmal schauen, wie genau man in Java für Random nur einen bestimmten Zahlenbereich angibt.

Alternativ könntest du auch die bereits gezogenen Zahlen in einem Array speichern und nach jedem Würfeln überprüfen, ob das Array bereits diese Zahl enthält.
 
Zuletzt bearbeitet:
Also mal unabhängig zum Thema, ist die for-each Schleife im 2. Post absolut sinnlos. Zuerst wird ein Wert aus dem Array in eine lokale Variable kopiert und dann wird nur die Kopie verändert. Also wenn man so was macht, bitte nur mit einer normalen for Schleife mit Index. 🙂

Grüße coco07
 
Scheint eine Schulaufgabe zu sein.
Java:
import java.util.Random;
class Main
{
   public static void main(String[] args)
   {
      // Parameter:
      int in = 49;
      int out = 6;
      
      // Zahlen auswählen:
      Random r = new Random();
      int[] valuesIn = new int[in];
      int[] valuesOut = new int[out];
      for(int i = 0; i < in; )
      {
         valuesIn[i] = ++i;
      }  
      for(int i = 0; i < out; ++i)
      {
         int j = r.nextInt(in);
         valuesOut[i] = valuesIn[j];
         valuesIn[j] = valuesIn[--in];
      }      
      
      // Ausgabe:
      for(int i = 0; i < out; ++i)
      {
         System.out.print(valuesOut[i] + " ");
      }
   }
}
 

Zurück
Oben