# Java Lotto Zahl 6 aus 49 - Brauche Hilfe



## javajavajava (21. Sep 2009)

```
import javax.swing.JOptionPane;



public class lotto {

	
	



	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
	
		
	
		
		
		int zahl1 = (int) (Math.random()* 49+1);
		int zahl2 = (int) (Math.random()* 49+1);
		int zahl3 = (int) (Math.random()* 49+1);
		int zahl4 = (int) (Math.random()* 49+1);
		int zahl5 = (int) (Math.random()* 49+1);
		int zahl6 = (int) (Math.random()* 49+1);
		
		
		System.out.println(zahl1);
		System.out.println(zahl2);
		System.out.println(zahl3);
		System.out.println(zahl4);
		System.out.println(zahl5);
		System.out.println(zahl6);
		
		JOptionPane.showMessageDialog(null, "Lotto 6 aus 49 - Spiel beginnen");
		
		
		double z1 = Double.parseDouble( JOptionPane.showInputDialog("Zahl1") );
		double z2 = Double.parseDouble( JOptionPane.showInputDialog("Zahl2") );
		double z3 = Double.parseDouble( JOptionPane.showInputDialog("Zahl3") );
		double z4 = Double.parseDouble( JOptionPane.showInputDialog("Zahl4") );
		double z5 = Double.parseDouble( JOptionPane.showInputDialog("Zahl5") );
		double z6 = Double.parseDouble( JOptionPane.showInputDialog("Zahl6") );
		

		// die folgenden kombinationen ergeben keinen sinn, ich will versuchen,
                // die variablen zahl1 zahl2 etc hintereinander abzufragen
                // z.b. so  if (z1 == zahl1 || zahl2 || zahl3 etc.) 
                // iwi komm ich aber damit nicht weiter wie kann man dass den 
		// vereinfachen?


		if (z1 == zahl1 && z2 == zahl2 && z3 == zahl3 
				&& z4 == zahl4 && z5 == zahl5 && z6 == zahl6)
		JOptionPane.showMessageDialog(null, "Du hast den Jackpot geknackt");
		
		else if (z1 == zahl1 && z2 == zahl2 && z3 == zahl3 
				&& z4 == zahl4 && z5 == zahl5)
			
			JOptionPane.showMessageDialog(null, "Du hast fünf Richtige");
			
		else if (z1 == zahl1 && z2 == zahl2 && z3 == zahl3 
				&& z4 == zahl4)
			
			JOptionPane.showMessageDialog(null, "Du hast vier Richtige");
		
		else if (z1 == zahl1 && z2 == zahl2 && z3 == zahl3 
				)
			
			JOptionPane.showMessageDialog(null, "Du hast drei Richtige");
		
       
		else if (z1 == zahl1 && z2 == zahl2 )
			
			
			JOptionPane.showMessageDialog(null, "Du hast zwei Richtige");
			
		
		else if (z1 == zahl1 || z1 == zahl2 || z1 == zahl3 || z1 == zahl4 ||
				z1 == zahl5 || z1 == zahl6 
				|| z2 == zahl1 || z2 == zahl2 || z2 == zahl3 || z2 == zahl4 ||
				z2 == zahl5 || z2 == zahl6 
				|| z3 == zahl1 || z3 == zahl2 || z3 == zahl3 || z3 == zahl4 ||
				z3 == zahl5 || z3 == zahl6 
				|| z4 == zahl1 || z4 == zahl2 || z4 == zahl3 || z4 == zahl4 ||
				z4 == zahl5 || z4 == zahl6 
				|| z5 == zahl1 || z5 == zahl2 || z5 == zahl3 || z5 == zahl4 ||
				z5 == zahl5 || z5 == zahl6 
				|| z6 == zahl1 || z6 == zahl2 || z6 == zahl3 || z6 == zahl4 ||
				z6 == zahl5 || z6 == zahl6 )
			
		JOptionPane.showMessageDialog(null, "Du hast eine Richtige");
```


Soweit bin ich gekommen, aber ich habe jetzt schon haufen probleme. Der Code funktioniert zwar so, aber wenn ich folgendes Versuche


```
if (z1 == zahl1 || zahl2 || zahl3)  // etc.
```

wird mir ständig ein Fehler angezeigt.


Wie kann ich den Programmcode denn vereinfacht darstellen?

sorry bin mehr oder weniger noch Anfänger und komme einfach nicht dahinter, wie ich dass mit möglichst wenig programmcode darstellen könnte.

ich hoffe ihr könnt mir weiterhelfen.


MFG


----------



## SlaterB (21. Sep 2009)

allgemein um abzukürzen:
schreibe dir eine Hilfsmethode
boolean equal(x,y1,y2,y3,y4,y5)
die x auf normale Weise mit allen y vergleicht

hier wirst du mit tausenden Vergleichen aber nicht weit kommen,
mache es so:
schreibe 6 Zahlen als Integer in ein Set und entferne aus diesem Set die anderen 6 Zahlen,
wenn am Ende nix mehr drin ist, dann wurden alle 6 rausgenommen -> Jackpot,
wenn noch 2 drin sind, waren es 4 richtige usw., einfache Auswertung

setzt voraus, dass du anfangs überhaupt 6 verschiedene hattest, das ist bei 6 beliebigen Zufallszahlen nicht gesichert,
auch da hilft ein Set:
schreibe eine while-Schleife, erstelle immer wieder eine Zufallszahl und füge sie ins Set ein, bis dieses 6 Elemente enthält


----------



## javajavajava (21. Sep 2009)

meinst du mit set sowas in der Art


```
public static void main(String[] args) {
		// TODO Auto-generated method stub
int tip [] =[0,0,0,0,0,0,0]; 		

for (int i=1; i<7;i++);
```


sorry, dass ich so blöd frage, aber bin ein wahrer nichtskönner, wenns um java geht ^^ 


die Zahlen sollen der Input Dialog eingegeben werden, kann ich diese zahlen auch in einem int speichern, die in der Input Box eingegeben werden?


----------



## SlaterB (21. Sep 2009)

ein Array ist kein Set und kann nur begrenzt helfen, da musst du alle Positionen einzeln vergleichen,
auch damit kann man das Problem irgendwie lösen, ist nur aufwendig,

boolean equal(x,y1,y2,y3,y4,y5)
kann helfen

Array ist aber auch schon nützlich, da gibt es ja for-Schleife, um weniger einzelne if programmieren zu müssen

a la 
for (i) { vergleiche x mit array_ }


--------

ansonsten habe ich zwei völlig andere Punkte angesprochen:
1. Set verwenden, das musst du in einem Lehrbuch nachschlagen und 1-3 Tage lernen, 

2. wenn du einfach nur 6 Zufallszahlen bildest können da Doppelte drin sein,
wiederum mit zig if-Vergleichen oder Set zu lösen_


----------

