Java Lotto 49 / Arrays & Math.random

TH€_BR@!N

Cadet 4th Year
Registriert
März 2005
Beiträge
85
Lotto 49 / Methode zum vergleichen der Zahlen? Zähl & Vergleichs Methode

Hy,

Habe vor ein paar Wochen mit Java angefangen, gibt ja genug Tutorials im Netz.

Nun probiere ich mich stück für stück weiter vor zu coden... :freak:

mein Problem:
Suche eine einfache Möglichkeit die 6 Zahlen des Benutzers mit den 6 random.Lottozahlen + die random.Superzahl zu vergleichen um dann eine aussage treffen zu können wie viele Treffer man hat.

Also eine zählfunktion & vergleichsfunktion in einem.

Natürlich könnte ich es auch alles einzeln vergleichen (if...else if....) aber das würde ganz schön viel an code werden.

Code:
		int i;
		int lottozahlen = 7;
		int[] matrixEins = new int[lottozahlen];
		int zahl1=0;
		int zahl2=0;
		int zahl3=0;
		int zahl4=0;
		int zahl5=0;
		int zahl6=0;
		int ran0=0;
		int ran1=0;
		int ran2=0;
		int ran3=0;
		int ran4=0;
		int ran5=0;
		int ran6=0;
		int ran7=0;
		int ran=0;
		
		System.out.println();
		System.out.println();
		System.out.println("Bitte geben sie mir nach der Reihe ihre Lottozahlen an.");
		System.out.println("Die Zahlen muessen zwischen 1-49 liegen.");
		System.out.println();
		System.out.print("nun ihre 1 Zahl: ");
		zahl1=Integer.parseInt(input.readLine());
		
		System.out.print("nun ihre 2 Zahl: ");
		zahl2=Integer.parseInt(input.readLine());
		
		System.out.print("nun ihre 3 Zahl: ");
		zahl3=Integer.parseInt(input.readLine());
		
		System.out.print("nun ihre 4 Zahl: ");
		zahl4=Integer.parseInt(input.readLine());
		
		System.out.print("nun ihre 5 Zahl: ");
		zahl5=Integer.parseInt(input.readLine());
		
		System.out.print("nun ihre 6 Zahl: ");
		zahl6=Integer.parseInt(input.readLine());
		
		for (i=0; i<lottozahlen; i++) 
		{
		 if(i==0)
			{
			 ran0 = (int)(Math.random()*49)+1;
			 while(ran0<=0)
				{
				 ran0 = (int)(Math.random()*49)+1;
				}
			 matrixEins[i] = ran0;
			}
		 else if(i==1)
			{
			 ran1 = (int)(Math.random()*49)+1;
			 while(ran1==ran0)
				{
				 ran1 = (int)(Math.random()*49)+1;
				}
			 matrixEins[i] = ran1;
			}
		 else if(i==2)
			{
			 ran2 = (int)(Math.random()*49)+1;
			 while((ran2==ran0) & (ran2==ran1))
				{
				 ran = (int)(Math.random()*49)+1;
				}
			 matrixEins[i] = ran2;
			}
		 else if(i==3)
			{
			 ran3 = (int)(Math.random()*49)+1;
			 while((ran3==ran0) & (ran3==ran1) & (ran3==ran2))
				{
				 ran = (int)(Math.random()*49)+1;
				}
			 matrixEins[i] = ran3;
			}
		 else if(i==4)
			{
			 ran4 = (int)(Math.random()*49)+1;
			 while((ran4==ran0) & (ran4==ran1) & (ran4==ran2) & (ran4==ran3))
				{
				 ran = (int)(Math.random()*49)+1;
				}
			 matrixEins[i] = ran4;
			}
		 else if(i==5)
			{
			 ran5 = (int)(Math.random()*49)+1;
			 while((ran5==ran0) & (ran5==ran1) & (ran5==ran2) & (ran5==ran3) & (ran5==ran4))
				{
				 ran = (int)(Math.random()*49)+1;
				}
			 matrixEins[i] = ran5;
			}
		 else if(i==6)
			{
			ran6 = (int)(Math.random()*49)+1;
			 while((ran6==ran0) & (ran6==ran1) & (ran6==ran2) & (ran6==ran3) & (ran6==ran4) & (ran6==ran5))
				{
				 ran = (int)(Math.random()*49)+1;
				}
			 matrixEins[i] = ran6;
			}
		 else if(i==7)
			{
			 ran7 = (int)(Math.random()*49)+1;
			 while((ran7==ran0) & (ran7==ran1) & (ran7==ran2) & (ran7==ran3) & (ran7==ran4) & (ran7==ran5) & (ran7==ran6))
				{
				 ran = (int)(Math.random()*49)+1;
				}
			 matrixEins[i] = ran7;
			}
		} 
	 System.out.println();
	 System.out.println("Ziehung der 1 Lottozahl: "+matrixEins[0]+"");
	 System.out.println("Ziehung der 2 Lottozahl: "+matrixEins[1]+"");
	 System.out.println("Ziehung der 3 Lottozahl: "+matrixEins[2]+"");
	 System.out.println("Ziehung der 4 Lottozahl: "+matrixEins[3]+"");
	 System.out.println("Ziehung der 5 Lottozahl: "+matrixEins[4]+"");
	 System.out.println("Ziehung der 6 Lottozahl: "+matrixEins[5]+"");
	 System.out.println("Ziehung der Superzahl: "+matrixEins[6]+"");
	 System.out.println();


es dient für mich zur Übung und Verständnis.
vielen dank für einen tip.
 
Zuletzt bearbeitet:
Code:
 for(int[] row : matrixEins) //beginn der erweiterten zählerschleife
 {
      for(int value : row)
        {
           System.out.print(value); // den inhalt der arrays anzeigen
        }
      System.out.println();
 }

Das macht so keinen Sinn (du willst ein Array im Array ausgeben, du sollst aber ein int aus dem Array ausgeben). Du denkst hier falsch. Zum simplen Ausgeben untereinander:

Code:
  for(int j : matrixEins) //beginn der erweiterten zählerschleife
  {
	System.out.println(j);
  }

Wenn du dir das Array ausgeben lässt, dann wirst du sehen dass es bei den Lottozahlen doppelte gibt. Sprich in einem Feld, wegen mir die ersten 6 Stellen im Array sind je nach Zufallszahlen doppelte Werte dabei. Das ist im realen Lotto falsch. Mach dir Gedanken wie du dagegen was tun kannst...

Ausserdem solltest du auf deine Codeformatierung achten. Gerade am Anfang ist es wichtig sich die entsprechenden Formalitäten anzueignen. Obwohl es bei if-Anweisungen und Schleifen nicht relevant ist bei einem einzeiligen Command dieses in Blöcke zu setzen, würde ich es dir trotzdem empfehlen.. Ich spreche aus Erfahrung. Es dient schlichtweg der Wartbarkeit und Übersichtlichkeit sofern deine Projekte umfangreicher und komplexer werden.
Desweiteren solltest du darauf achten dass eine gewisse Hierarchie zu erkennen ist in deinem Code. Dies erlangst du durch den bedachten Einsatz von "Tab", um gewisse Statements einzurücken (Tipp: Nutze Eclipse).

Achja und dein Error, welcher von deinem Compiler geworfen wurde zeigt dir auch eine Zeilennummer an. In deinem Fall die Zeile 14, eben dort wo der Fehler beim Compilieren enstanden ist. Es hilft immer ungemein sich diese Zeile nochmals genau anzuschauen.
 
Zuletzt bearbeitet:
genau, man bin ich blind!
das ist ja nur ein einfaches array....hatte die blöde klammer noch vom mehrdimensionalen array.

das mit den doppelzahlen war mir im Vorfeld schon klar da habe ich aber schon ein paar ansätze im kopf die ich testen werde. Wollte nicht alles auf ein mal schreiben sonst werde ich am ende noch komplett überhäuft von den fehlermeldungen , und das möchte ich ja net.

danke für deine hilfe!
Ergänzung ()

Gibt es eine Methode womit ich meine eingegebenen.Lottozahlen mit den random.lottozahlen vergleichen kann um dann eine aussage der Treffer zu machen?

- Sodas ich mit dem Ergebnis sysop("Sie haben 5 richtige plus Superzahl") aussagen könnte.

Das einzige was mir momentan zur Umsetzung ein fällt ist alles mit if...else if oder Zählerschleife um zu setzen. Denke das könnte aber eine ganze menge an code werden...daher glaube ich das es vielleicht einen bessere und einfachere Methode dafür geben könnte.
 
Zuletzt bearbeitet:
Die Java Liste hat eine Funktion mit der man testen kann, ob ein bestimmtes Element enthalten ist. Das wirst du für jede deiner Zahlen wiederholen müssen (in einer Schleife) ... andere Möglichkeit würde ich gerade nicht sehen.

Wk
 
Die Lösung von Wookie_81 hört sich doch gut an.

Aber genau das Lösen solcher Probleme macht doch das Programmieren aus ;-) Probier etwas kreativ zu sein und selbst eine Lösung zu finden.
 
Zurück
Oben