Lotto Spiel

Pazago

Mitglied
Hallo,

Ich möchte mir ein eigenes Lotto spiel programmieren. Das mit den random Zahlen habe ich einigermaßen Schnell hin bekommen 🙂
Jetzt möchte ich aber mit Hilfe der Fallunterscheidung Einstellen das automatisch angezeigt wird wie viele Richtige man hat. Mit hilfe der If-Anweisung hab ich es für eine Richtige hinbekommen aber wie sieht es dann bei 2 oder mehreren aus????:L???:L

Wäre super wenn ihr mir helfen könntet:rtfm:


Liebe Grüße Pazago


P.s ich programiere mit dem JavaEditor und bin anfänger 😉

Mein Code
Java:
int a, b;
    
         a = nFZahl1.getInt();
         b = (int) ((Math.random()* 49 )+1);
         nF1.setInt(b);
         
         a = nFZahl2.getInt();
         b = (int) ((Math.random()* 49 )+1);
         nF2.setInt(b);
         
         a = nFZahl3.getInt();
         b = (int) ((Math.random()* 49 )+1);
         nF3.setInt(b);
         
         a = nFZahl4.getInt();
         b = (int) ((Math.random()* 49 )+1);
         nF4.setInt(b);
         
         a = nFZahl5.getInt();
         b = (int) ((Math.random()* 49 )+1);
         nF5.setInt(b);
         
         a = nFZahl6.getInt();
         b = (int) ((Math.random()* 49 )+1);
         nF6.setInt(b);
         
         if (nFZahl1 == nF1) {
         JOptionPane.showMessageDialog(null,"Wenigstens eine");
         }
          if (nFZahl2 == nF2) {
          JOptionPane.showMessageDialog(null,"Wenigstens eine");
          }
           if (nFZahl3 == nF3) {
           JOptionPane.showMessageDialog(null,"Wenigstens eine");
           }
            if (nFZahl4 == nF4) {
            JOptionPane.showMessageDialog(null,"Wenigstens eine");
            }
             if (nFZahl5 == nF5) {
             JOptionPane.showMessageDialog(null,"Wenigstens eine");
             }
              if (nFZahl6 == nF6) {
              JOptionPane.showMessageDialog(null,"Wenigstens eine");
              }
  }
 
Mit hilfe der If-Anweisung hab ich es für eine Richtige hinbekommen
sicher nicht 😉 Das war dann nur Zufall. Denn: Was du mit == prüfst sind gar nicht die getippten / gezogenen Zahlen. Was auch immer nFZahlX und nFX ist, es sind keine Zahlen, sondern komplexere Objekte (Objekte irgendeiner Klasse). Welche, das sehen wir jetzt aus deinem Code nicht.

Aber was du eig. prüfen müsstest:

Java:
if ( nFZahl1.getInt() == nF1.getInt() ) { ... }

usw
 
habe mal gerade auf die Schnelle ein kleines Lotto Programm geschrieben anhand dessen du dich orientieren kannst

Da ich das gerade auf die schnelle geschrieben habe ist es hundsmiserabel aber es läuft 😀
Java:
import java.io.*;

public class Lotto {

public static void main(String[] args)  throws IOException {
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int e = 0;
int f = 0;

String eingabe;
int eins,zwei,drei,vier,fuenf,sechs;

BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
System.out.println("g eingeben um Zahlen zu generieren");
eingabe = input.readLine();

if(eingabe.equals("g")) {
a = (int) ((Math.random()* 49 )+1);
b = (int) ((Math.random()* 49 )+1);
c = (int) ((Math.random()* 49 )+1);
d = (int) ((Math.random()* 49 )+1);
e = (int) ((Math.random()* 49 )+1);
f = (int) ((Math.random()* 49 )+1);
} 

if(a==b||a==c||a==d||a==e||a==f) {
a++;
}
if(b==a||b==c||b==d||b==e||b==f) {
b++;
}
if(c==b||c==a||c==d||c==e||c==f) {
c++;
}
if(d==b||d==c||d==a||d==e||d==f) {
d++;
}
if(e==b||e==c||e==d||e==a||e==f) {
e++;
}
if(f==b||f==c||f==d||f==e||f==a) {
f++;
}

 

System.out.println("Geben sie nun ihre 6 Zahlen ein: ");
eins = Integer.parseInt(input.readLine());
zwei = Integer.parseInt(input.readLine());
drei = Integer.parseInt(input.readLine());
vier = Integer.parseInt(input.readLine());
fuenf = Integer.parseInt(input.readLine());
sechs = Integer.parseInt(input.readLine());

if(eins>49||eins< 1||zwei>49||zwei<1||drei>49||drei<1||vier>49||vier<1||fuenf>49||fuenf<1||sechs>49||sechs<1) {
System.out.println("Falsche Angaben ! Ihre Zahlen dürfen nur zwischen 49 und 1 sein!");
System.exit(0);
}

System.out.println("Die gezogenen Zahlen: "+a+" "+b+" "+c+" "+d+" "+e+" "+f);
System.out.println("Ihre Zahlen: "+eins+" "+zwei+" "+drei+" "+vier+" "+fuenf+" "+sechs);
System.out.println("Richtige Zahlen: ");
if(eins==a||eins==b||eins== c||eins==d||eins==e||eins==f) {
System.out.println(""+eins);

}
if(zwei == a||zwei == b||zwei == c||zwei == d||zwei == e||zwei == f) {
System.out.println(""+zwei);
}
if(drei == a||drei == b||drei == c||drei == d||drei == e||drei == f) {
System.out.println(""+drei);
}

if(vier == a||vier == b||vier == c||vier == d||vier == e||vier == f) {
System.out.println(""+vier);
}

if(fuenf == a||fuenf == b||fuenf == c||fuenf == d||fuenf == e||fuenf == f) {
System.out.println(""+fuenf);
}

if(sechs == a||sechs == b||sechs == c||sechs == d||sechs == e||sechs == f) {
System.out.println(""+sechs);
}
}
}

was du jetzt noch verbessern könntest wäre : die zahlen in einem array zu speichern dann gehen die überprüfungen auch einfacher und mit weniger code
 
Zuletzt bearbeitet:
Also um das ganze mit einem Array zu machen leg dir zwei Arrays an einmal für die genrierten Zahlen und eins für deine eingegeben Zahlen

nun brauchst du eine for-Schleife die bis 6 zählt und dann einfach jedem arrayindex eine zahl zuweisen
und am ende prüfen ob:
if(genArray == zahlArray) {
System.out.println(.....);
}
 
Hier auch von mir mal eine hingerotzte Version:

Java:
public class Lotto {

    public static void main(String[] args) {

	int[] tipp = new int[6];
	Scanner scan = new Scanner(System.in);
	for (int i = 0; i < 6; i++) {
	    System.out.print("Bitte " + (i + 1) + ".te Zahl eingeben: ");
	    tipp[i] = scan.nextInt();
	}

	System.out.print("Die Ziehung lautet: ");
	int[] ziehung = new int[6];
	Random r = new Random();
	for (int i = 0; i < 6; i++) {
	    ziehung[i] = r.nextInt(49) + 1; // 1-49
	    System.out.print(ziehung[i] + " ");
	}
	System.out.println();

	int richtige = 0;
	for (int i = 0; i < 6; i++) {
	    for (int j = 0; j < 6; j++) {
		if (ziehung[i] == tipp[j]) {
		    richtige++;
		    break;
		}
	    }
	}
	System.out.println("Sie haben " + richtige + " Richtige!");
    }
}

Natürlich sind hier diverse Fälle noch nicht abgedeckt. zB: Bei der zufälligen Ziehung kann es noch sein dass mehrmals die selbe Zahl gezogen wird, was zu einem falschen Ergebnis führt. Oder: Der Benutzer gibt irgendeinen Text ein statt Zahlen, dann fliegt ne Exception usw. Das müsste man halt nacharbeiten, aber das kannste schon mal als Grundgerüst nehmen 😉
 
Ja schau dir das Beispiel von hdi an da kannst du sehen wie ich das mit den Arrays meine
wenn man nicht weiterkommt dann hilft es immer sehr sich das Problem mit Blatt und Stift aufzuzeichnen
wie du hier siehst hat hdi die überpüfung
ziehung == tipp dadurch musst du nicht die mühseligen überprüfungen wie in meiner version machen weil du eben das ganze in ein Array packst
 
Ich hab kaum Ahnung von Lotto, weiß aber, dass 6 aus 49 gezogen werden und die Wahrscheinlichkeit, alle richtig zu haben, sehr gering ist.

Aus dem Ausschnitt geht jetzt nicht hervor, Variablen welchen Typs nFZahlXXX usw. sind. Das Posten komplettierten Quellcodes wäre hilfreich.

Zuerst sollte man überlegen, was gebraucht wird. 6 Zahleingaben, dann 6 Zufallszahlen, dann die Prüfung welche Eingaben mit welchen Zufallszahlen übereinstimmen. Mit welcher Struktur speichert man beide Sachen, um hinterher unproblematisch die Anzahl der Übereinstimmungen zu ermitteln, auch um keine doppelten Zahlen zu erlauben? HashSet.

Java:
        HashSet<Integer> eingaben = new HashSet<Integer>();
        HashSet<Integer> zufall = new HashSet<Integer>();

        Scanner eing = new Scanner(System.in);
        System.out.println("Gebe jetzt 6 Zahlen, jeweils gefolgt von Enter, ein:");
        while (eingaben.size() < 6) {
            eingaben.add(eing.nextInt());
        }

        System.out.println("Danke, jetzt wird gezogen");
        while (zufall.size() < 6) {
            final int zuf = (int) (Math.random() * 49) + 1;
            System.out.println("zuf: " + zuf);
            zufall.add(zuf);
        }

        System.out.println("Jetzt verglichen");
        int gleiche = 0;
        for (Integer i : zufall) {
            if (eingaben.contains(i)) {
                System.out.println("Es ist gleich: " + i);
                gleiche++;
            }
        }

        System.out.println("gleiche: " + gleiche);

In Zeile 7 wird die nächste Zahl in die Set gelegt, wenn nicht bereits vorhanden. Das sichert, dass keine doppelten Elemente vorhanden sind. Man müsste die Eingabe eigentlich noch weiter prüfen, ob der Benutzer auch keinen Blödsinn eingegeben hat - aber so wird seine Chance, richtige zu haben, eben geringer. In Zeile 12 wird die Zufallszahl erzeugt. Das generierte double wird mit 49d multipliziert, was ein double mit Wert zwischen [0,49[ ergibt, das dann mittels einengender Topkonvertierung gecastet "auf ein" int wird, welchem dann 1 addiert wird, weil der bei der Konvertierung immer abgerundet wird.

Was man sich nur noch asehn muss: Autoboxing, type cast, HashSet, Math, Kontrollstrukturen (while, for, for-each), ++/---Syntax usw.
 
deine Lösung in allen Ehren ist wirklich richtig gut gelungen aber meinst du nicht das das ein wenig Overkill für ein kleines LottoSpiel ist
besonders in Bezug auf den TO der gerade Java am lernen ist da mit for-each Schleifen oder mit
HashSet<Integer> zu kommen ist vielleicht einer der schönereren Lösungen aber für den Anfang eher ungeeigenet

Bitte nicht falsch verstehen ist ja nicht böse gemeint
 
Naja, er lernt wahrscheinlich mehr dabei, wenn er die Fehler aufgezeigt bekommt, die sich in seinen eigenem Code befinden, aber dafür müsste er erst weiteren code posten, und bis dahin probieren sich eben alle anderen an ihrer eigenen Lösung 😉
 
@ dehlen was genau meinst du bei deinem Quelltext bei der Stelle:
Java:
if(a==b||a==c||a==d||a==e||a==f) {
a++;
}
if(b==a||b==c||b==d||b==e||b==f) {
b++;
}
if(c==b||c==a||c==d||c==e||c==f) {
c++;
}
if(d==b||d==c||d==a||d==e||d==f) {
d++;
}
if(e==b||e==c||e==d||e==a||e==f) {
e++;
}
if(f==b||f==c||f==d||f==e||f==a) {
f++;
Ich hab irgend wie das Gefühl das es der Springende Punkt ist nur ich weiß nicht genau was gemeint ist. Das in der Klammer soll prüfen ob die Zahlen gleich sind nehme ich an und für was steht das X++???:L


Ich erläutere noch mal meinen Quelltext da es zu dem ja anscheinend verständnis Probleme gab:

Bei dem Nachfolgenden Text hab ich, da ich das ganze als Frame Programmiere, den einzelnen Feldern wo du Zufallszahlen später stehen ihr Zuffals zahl gegeben.
Hierbei ist nF1-6 das Feld wo die Zahl erscheint.
Java:
int a, b;

         a = nFZahl1.getInt();
         b = (int) ((Math.random()* 49 )+1);
         nF1.setInt(b);

         a = nFZahl2.getInt();
         b = (int) ((Math.random()* 49 )+1);
         nF2.setInt(b);

         a = nFZahl3.getInt();
         b = (int) ((Math.random()* 49 )+1);
         nF3.setInt(b);

         a = nFZahl4.getInt();
         b = (int) ((Math.random()* 49 )+1);
         nF4.setInt(b);

         a = nFZahl5.getInt();
         b = (int) ((Math.random()* 49 )+1);
         nF5.setInt(b);

         a = nFZahl6.getInt();
         b = (int) ((Math.random()* 49 )+1);
         nF6.setInt(b);


Dann war meine Idee das ich mit Hilfe der Fallunterscheidung Anzeigen lasse wie viele Richtigen man hat dort bin ich aber dann gescheitert da mein Bescheidenes wissen in Java nicht mehr aussreicht 😱

nFZahl1-6 ist die Zahl die der Benutzter eingegeben hat also die getippte Zahl
und nF1-6 die Random Zahl
Java:
 if (nFZahl1 == nF1) {
         JOptionPane.showMessageDialog(null,"Wenigstens eine");
         }
          if (nFZahl2 == nF2) {
          JOptionPane.showMessageDialog(null,"Wenigstens eine");
          }
           if (nFZahl3 == nF3) {
           JOptionPane.showMessageDialog(null,"Wenigstens eine");
           }
            if (nFZahl4 == nF4) {
            JOptionPane.showMessageDialog(null,"Wenigstens eine");
            }
             if (nFZahl5 == nF5) {
             JOptionPane.showMessageDialog(null,"Wenigstens eine");
             }
              if (nFZahl6 == nF6) {
              JOptionPane.showMessageDialog(null,"Wenigstens eine");
              }
 
das bedeutet nichts anderes das
a überprüft wird ob es den gleichen wert wie b oder wie c oder wie d oder wie e oder wie f hat und wenn ja dann wird a um eins erhöht daher das a++;
damit es nicht vorkommen kann das bei den generierten zahlen gleiche zahlen rauskommen können
 
Bei dem Nachfolgenden Text hab ich, da ich das ganze als Frame Programmiere, den einzelnen Feldern wo du Zufallszahlen später stehen ihr Zuffals zahl gegeben.
Hierbei ist nF1-6 das Feld wo die Zahl erscheint.

Das versteht niemand, das ist ja noch nicht mal ein halbwegs richtiger Satz.

Du hast für jede eingegebene Zahl ein Objekt gemacht und gibst diesen Objekten jeweils eine Zufallszahl, richtig? Dann kommt es also auch auf die richtige Reihenfolge an. Das entspräche nicht mehr dem uns bekannten Lotto. Aber natürlich wäre das so veränderte Lotto auch vorstellbar. Die Objekte müssten dann eine Methode haben, als Attribute vorhandene oder übergebene Zahlen mit den ursprünglich den Objekten angehörenden Zahlen zu vergleichen. Soweit klar?
 
Du hast für jede eingegebene Zahl ein Objekt gemacht und gibst diesen Objekten jeweils eine Zufallszahl, richtig?
Richitg

Dann kommt es also auch auf die richtige Reihenfolge an.
Was genau meinst du damit? es soll schon ein richtiges Lotto sein nur hab ich in meinem Ur-Quelltext den Fehler gemacht das ich dachte das das bei Lotte die Zahl 1 mit der ersten gezogenen Zahl übereinstimmen muss und nicht auch mit der zweiten stimmen würde.
 
Ich hab jetzt alles noch mal überdenhaufen geworfen und mich bei der Programierung ziemlich stark an den Coedes von dehlen orientiert aber es kommt egal was ich mache immer die selbe Fehler meldung:

Java:
Compiliere C:\Users\Sebastian_2\Documents\Schule\LOTTO.java mit Java-Compiler
LOTTO.java:92:6: cannot find symbol
symbol  : method setBounds(int,int,int,int)
location: class java.awt.Dimension
    d.setBounds(256, 120, 33, 24);
     ^
LOTTO.java:93:6: cannot find symbol
symbol  : method setText(java.lang.String)
location: class java.awt.Dimension
    d.setText("");
     ^
LOTTO.java:94:7: cannot find symbol
symbol  : method add(java.awt.Dimension)
location: class java.awt.Panel
    cp.add(d);
      ^
3 errors

Hier der Quelltext
Java:
import java.awt.*;
import java.awt.event.*;
import java.io.*;


/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 27.03.2011
  * @author
  */

public class LOTTO extends Frame {
  // Anfang Attribute
  private Label label1 = new Label();
  private NumberField eins = new NumberField();
  private NumberField zwei = new NumberField();
  private NumberField sechs = new NumberField();
  private NumberField fuenf = new NumberField();
  private NumberField vier = new NumberField();
  private NumberField drei = new NumberField();
  private Label laZahl = new Label();
  private Label laRichtig = new Label();
  private NumberField a = new NumberField();
  private NumberField f = new NumberField();
  private NumberField e = new NumberField();
  private NumberField d = new NumberField();
  private NumberField c = new NumberField();
  private NumberField b = new NumberField();
  private Button buSpielen = new Button();
  private Button buNeu = new Button();
  private Button buExit = new Button();
  // Ende Attribute

  public LOTTO(String title) {
    // Frame-Initialisierung
    super(title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { dispose(); }
    });
    int frameWidth = 446;
    int frameHeight = 430;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    Panel cp = new Panel(null);
    add(cp);
    // Anfang Komponenten

    label1.setBounds(24, 24, 42, 16);
    label1.setText("Lotto:");
    label1.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label1);
    eins.setBounds(112, 56, 33, 24);
    eins.setText("");
    cp.add(eins);
    zwei.setBounds(160, 56, 33, 24);
    zwei.setText("");
    cp.add(zwei);
    sechs.setBounds(352, 56, 33, 24);
    sechs.setText("");
    cp.add(sechs);
    fuenf.setBounds(304, 56, 33, 24);
    fuenf.setText("");
    cp.add(fuenf);
    vier.setBounds(256, 56, 33, 24);
    vier.setText("");
    cp.add(vier);
    drei.setBounds(208, 56, 33, 24);
    drei.setText("");
    cp.add(drei);
    laZahl.setBounds(24, 56, 79, 16);
    laZahl.setText("Ihre Zahlen:");
    laZahl.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(laZahl);
    laRichtig.setBounds(0, 120, 106, 16);
    laRichtig.setText("Richtige Zahlen:");
    laRichtig.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(laRichtig);
    a.setBounds(112, 120, 33, 24);
    a.setText("");
    cp.add(a);
    f.setBounds(352, 120, 33, 24);
    f.setText("");
    cp.add(f);
    e.setBounds(304, 120, 33, 24);
    e.setText("");
    cp.add(e);
    d.setBounds(256, 120, 33, 24);
    d.setText("");
    cp.add(d);
    c.setBounds(208, 120, 33, 24);
    c.setText("");
    cp.add(c);
    b.setBounds(160, 120, 33, 24);
    b.setText("");
    cp.add(b);
    buSpielen.setBounds(8, 184, 393, 25);
    buSpielen.setLabel("Spielen");
    buSpielen.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        buSpielen_ActionPerformed(evt);
      }
    });
    cp.add(buSpielen);
    buNeu.setBounds(8, 224, 393, 25);
    buNeu.setLabel("Neus Spiel");
    buNeu.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        buNeu_ActionPerformed(evt);
      }
    });
    cp.add(buNeu);
    buExit.setBounds(8, 264, 393, 25);
    buExit.setLabel("Exit");
    buExit.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        buExit_ActionPerformed(evt);
      }
    });
    cp.add(buExit);
    // Ende Komponenten

    setResizable(false);
    setVisible(true);
  }

// Anfang Methoden
 public void buSpielen_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
    int a = 0;
    int b = 0;
    int c = 0;
    int d = 0;
    int e = 0;
    int f = 0;

    String eingabe;
    int eins,zwei,drei,vier,fuenf,sechs;

    BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Zahlen eingeben");
    eingabe = input.readLine();

    if(eingabe.equals("g")) {
    a = (int) ((Math.random()* 49 )+1);
    b = (int) ((Math.random()* 49 )+1);
    c = (int) ((Math.random()* 49 )+1);
    d = (int) ((Math.random()* 49 )+1);
    e = (int) ((Math.random()* 49 )+1);
    f = (int) ((Math.random()* 49 )+1);
    }

    if(a==b||a==c||a==d||a==e||a==f) {
    a++;
    }
    if(b==a||b==c||b==d||b==e||b==f) {
    b++;
    }
    if(c==b||c==a||c==d||c==e||c==f) {
    c++;
    }
    if(d==b||d==c||d==a||d==e||d==f) {
    d++;
    }
    if(e==b||e==c||e==d||e==a||e==f) {
    e++;
    }
    if(f==b||f==c||f==d||f==e||f==a) {
    f++;
    }



    System.out.println("Ihre Zahlen");
    eins = Integer.parseInt(input.readLine());
    zwei = Integer.parseInt(input.readLine());
    drei = Integer.parseInt(input.readLine());
    vier = Integer.parseInt(input.readLine());
    fuenf = Integer.parseInt(input.readLine());
    sechs = Integer.parseInt(input.readLine());

    if(eins>49||eins< 1||zwei>49||zwei<1||drei>49||drei<1||vier>49||vier<1||fuenf>49||fuenf<1||sechs>49||sechs<1) {
    System.out.println("Falsche Angaben ! Die Zahlen dürfen nur zwischen 49 und 1 sein!");
    System.exit(0);
    }

    System.out.println("Die gezogenen Zahlen: "+a+" "+b+" "+c+" "+d+" "+e+" "+f);
    System.out.println("Ihre Zahlen: "+eins+" "+zwei+" "+drei+" "+vier+" "+fuenf+" "+sechs);
    System.out.println("Richtige Zahlen: ");
    if(eins==a||eins==b||eins== c||eins==d||eins==e||eins==f) {
    System.out.println(""+eins);

    }
    if(zwei == a||zwei == b||zwei == c||zwei == d||zwei == e||zwei == f) {
    System.out.println(""+zwei);
    }
    if(drei == a||drei == b||drei == c||drei == d||drei == e||drei == f) {
    System.out.println(""+drei);
    }

    if(vier == a||vier == b||vier == c||vier == d||vier == e||vier == f) {
    System.out.println(""+vier);
    }

    if(fuenf == a||fuenf == b||fuenf == c||fuenf == d||fuenf == e||fuenf == f) {
    System.out.println(""+fuenf);
    }

    if(sechs == a||sechs == b||sechs == c||sechs == d||sechs == e||sechs == f) {
    System.out.println(""+sechs);
    }


    
    }

  public void buNeu_ActionPerformed(ActionEvent evt) {
    a.setInt(0);
    b.setInt(0);
    c.setInt(0);
    d.setInt(0);
    e.setInt(0);
    f.setInt(0);
    
    eins.setInt(0);
    zwei.setInt(0);
    drei.setInt(0);
    vier.setInt(0);
    fuenf.setInt(0);
  }

  public void buExit_ActionPerformed(ActionEvent evt) {
    System.exit(0);
  }

  // Ende Methoden

  public static void main(String[] args) {
    new LOTTO("LOTTO");
  }
}
 
was soll NumberField sein ? ersetzte es mal mit JTextField

Ps: schreibe mal vor alle deine komponenten ein J also JLabel statt Label , da AWT veraltet ist
Wegen dem setBounds muss ich mal eben schauen dein Code ist sehr unübersichtlich
 
Zuletzt bearbeitet:
so mal auf die schnelle...neben einigen anderen Fehlern:

es gibt bei dir die Variable
Code:
d
doppelt:

Java:
  private NumberField d = new NumberField();

...

 Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
 
Also du solltest dir das mit der Gui Programmierung nochmal anschauen und du benutze viele veraltete Sachen

z.B button.setLabel("Neues Spiel");
könntest du einfach schon beim erstellen so machen:
JButton button = new JButton("Neues Spiel");

und d ist doppelt deklariert

EDIT:
Was soll setInt bitteschön sein oO
 
numberField ist das Feld wo die Zufalls Zahlen generiert werden und die eigenen Zahlen eingetragen werden. Es können auch nur zahlen eingetragen werden.

Wie verhalten die sich gegenüber da wir bis jetzt nur gelernt haben die AWT console zu benutzten.
 
ja aber du kannst deine methode nicht so schreiben :
Java:
public void buNeu_ActionPerformed(ActionEvent evt) {

dass muss so aussehen:

Java:
public void buNeu_ActionPerformed() {

und dann im ActionListener einfach die Methode aufrufen:
Java:
buNeu_ActionPerformed();
 
So lässt sich sich kompilieren ob alles so klappt wie du es dir vorgestellt hattest sei mal dahingestellt:
Java:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
 
 public class LOTTO extends JFrame {
  // Anfang Attribute
  private JLabel label1 = new JLabel();
  private JTextArea eins = new JTextArea();
  private JTextArea zwei = new JTextArea();
  private JTextArea sechs = new JTextArea();
  private JTextArea fuenf = new JTextArea();
  private JTextArea vier = new JTextArea();
  private JTextArea drei = new JTextArea();
  private JLabel laZahl = new JLabel();
  private JLabel laRichtig = new JLabel();
  private JTextArea a = new JTextArea();
  private JTextArea f = new JTextArea();
  private JTextArea e = new JTextArea();
  private JTextArea d = new JTextArea();
  private JTextArea c = new JTextArea();
  private JTextArea b = new JTextArea();
  private JButton buSpielen = new JButton();
  private JButton buNeu = new JButton();
  private JButton buExit = new JButton();
  // Ende Attribute
 
  public LOTTO(String title) throws IOException {
    // Frame-Initialisierung
    super(title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { dispose(); }
    });
    int frameWidth = 446;
    int frameHeight = 430;
    setSize(frameWidth, frameHeight);
   
   JPanel cp = new JPanel(null);
    add(cp);
    // Anfang Komponenten
 
    label1.setBounds(24, 24, 42, 16);
    label1.setText("Lotto:");
    label1.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(label1);
    eins.setBounds(112, 56, 33, 24);
    eins.setText("");
    cp.add(eins);
    zwei.setBounds(160, 56, 33, 24);
    zwei.setText("");
    cp.add(zwei);
    sechs.setBounds(352, 56, 33, 24);
    sechs.setText("");
    cp.add(sechs);
    fuenf.setBounds(304, 56, 33, 24);
    fuenf.setText("");
    cp.add(fuenf);
    vier.setBounds(256, 56, 33, 24);
    vier.setText("");
    cp.add(vier);
    drei.setBounds(208, 56, 33, 24);
    drei.setText("");
    cp.add(drei);
    laZahl.setBounds(24, 56, 79, 16);
    laZahl.setText("Ihre Zahlen:");
    laZahl.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(laZahl);
    laRichtig.setBounds(0, 120, 106, 16);
    laRichtig.setText("Richtige Zahlen:");
    laRichtig.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(laRichtig);
    a.setBounds(112, 120, 33, 24);
    a.setText("");
    cp.add(a);
    f.setBounds(352, 120, 33, 24);
    f.setText("");
    cp.add(f);
    e.setBounds(304, 120, 33, 24);
    e.setText("");
    cp.add(e);
    d.setBounds(246, 120, 33, 24);
    d.setText("");
    cp.add(d);
    c.setBounds(208, 120, 33, 24);
    c.setText("");
    cp.add(c);
    b.setBounds(160, 120, 33, 24);
    b.setText("");
    cp.add(b);
    buSpielen.setBounds(8, 184, 393, 25);
    buSpielen.setLabel("Spielen");
    buSpielen.addActionListener(new ActionListener()  {
      public void actionPerformed(ActionEvent evt)  {
          try {
        buSpielen_ActionPerformed();
    }
    catch(IOException e) {
        
    }
        
      }
    });
    cp.add(buSpielen);
    buNeu.setBounds(8, 224, 393, 25);
    buNeu.setLabel("Neus Spiel");
    buNeu.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        buNeu_ActionPerformed();
      }
    });
    cp.add(buNeu);
    buExit.setBounds(8, 264, 393, 25);
    buExit.setLabel("Exit");
    buExit.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        buExit_ActionPerformed();
      }
    });
    cp.add(buExit);
    // Ende Komponenten
 
    setResizable(false);
    setVisible(true);
  }
 
// Anfang Methoden
 public void buSpielen_ActionPerformed() throws IOException {
    // TODO hier Quelltext einfügen
    int a = 0;
    int b = 0;
    int c = 0;
    int d = 0;
    int e = 0;
    int f = 0;
 
    String eingabe;
    int eins,zwei,drei,vier,fuenf,sechs;
 
    BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Zahlen eingeben");
    eingabe = input.readLine();
 
    if(eingabe.equals("g")) {
    a = (int) ((Math.random()* 49 )+1);
    b = (int) ((Math.random()* 49 )+1);
    c = (int) ((Math.random()* 49 )+1);
    d = (int) ((Math.random()* 49 )+1);
    e = (int) ((Math.random()* 49 )+1);
    f = (int) ((Math.random()* 49 )+1);
    }
 
    if(a==b||a==c||a==d||a==e||a==f) {
    a++;
    }
    if(b==a||b==c||b==d||b==e||b==f) {
    b++;
    }
    if(c==b||c==a||c==d||c==e||c==f) {
    c++;
    }
    if(d==b||d==c||d==a||d==e||d==f) {
    d++;
    }
    if(e==b||e==c||e==d||e==a||e==f) {
    e++;
    }
    if(f==b||f==c||f==d||f==e||f==a) {
    f++;
    }
 
 
 
    System.out.println("Ihre Zahlen");
    eins = Integer.parseInt(input.readLine());
    zwei = Integer.parseInt(input.readLine());
    drei = Integer.parseInt(input.readLine());
    vier = Integer.parseInt(input.readLine());
    fuenf = Integer.parseInt(input.readLine());
    sechs = Integer.parseInt(input.readLine());
 
    if(eins>49||eins< 1||zwei>49||zwei<1||drei>49||drei<1||vier>49||vier<1||fuenf>49||fuenf<1||sechs>49||sechs<1) {
    System.out.println("Falsche Angaben ! Die Zahlen dürfen nur zwischen 49 und 1 sein!");
    System.exit(0);
    }
 
    System.out.println("Die gezogenen Zahlen: "+a+" "+b+" "+c+" "+d+" "+e+" "+f);
    System.out.println("Ihre Zahlen: "+eins+" "+zwei+" "+drei+" "+vier+" "+fuenf+" "+sechs);
    System.out.println("Richtige Zahlen: ");
    if(eins==a||eins==b||eins== c||eins==d||eins==e||eins==f) {
    System.out.println(""+eins);
 
    }
    if(zwei == a||zwei == b||zwei == c||zwei == d||zwei == e||zwei == f) {
    System.out.println(""+zwei);
    }
    if(drei == a||drei == b||drei == c||drei == d||drei == e||drei == f) {
    System.out.println(""+drei);
    }
 
    if(vier == a||vier == b||vier == c||vier == d||vier == e||vier == f) {
    System.out.println(""+vier);
    }
 
    if(fuenf == a||fuenf == b||fuenf == c||fuenf == d||fuenf == e||fuenf == f) {
    System.out.println(""+fuenf);
    }
 
    if(sechs == a||sechs == b||sechs == c||sechs == d||sechs == e||sechs == f) {
    System.out.println(""+sechs);
    }
 
 
    
    }
 
  public void buNeu_ActionPerformed() {
    a.setText("");;
    b.setText("");
    c.setText("");
    d.setText("");
    e.setText("");
    f.setText("");
    
    eins.setText("");
    zwei.setText("");
    drei.setText("");
    vier.setText("");
    fuenf.setText("");
    sechs.setText("");
    
  }
 
  public void buExit_ActionPerformed() {
    System.exit(0);
  }
 
  // Ende Methoden
 
  public static void main(String[] args) throws IOException {
    new LOTTO("LOTTO");
  }
}
 
Bei deiner Version läuft es 🙂
nur generriert er keine zufallszahl o.0


hab bei meiner Version das noch mal verbessert die alten Fehler sind weg :toll:
Jetzt zeigt er mir aber neue Fehler an. Kann es sein das ein input fehlt?

Java:
LOTTO.java:144:29: unreported exception java.io.IOException; must be caught or declared to be thrown
    eingabe = input.readLine();
                            ^
LOTTO.java:177:43: unreported exception java.io.IOException; must be caught or declared to be thrown
    eins = Integer.parseInt(input.readLine());
                                          ^
LOTTO.java:178:43: unreported exception java.io.IOException; must be caught or declared to be thrown
    zwei = Integer.parseInt(input.readLine());
                                          ^
LOTTO.java:179:43: unreported exception java.io.IOException; must be caught or declared to be thrown
    drei = Integer.parseInt(input.readLine());
                                          ^
LOTTO.java:180:43: unreported exception java.io.IOException; must be caught or declared to be thrown
    vier = Integer.parseInt(input.readLine());
                                          ^
LOTTO.java:181:44: unreported exception java.io.IOException; must be caught or declared to be thrown
    fuenf = Integer.parseInt(input.readLine());
                                           ^
LOTTO.java:182:44: unreported exception java.io.IOException; must be caught or declared to be thrown
    sechs = Integer.parseInt(input.readLine());
                                           ^
7 errors
 
Ich finde es ja keine gute Idee, dass da mehrere Methoden "ActionPerformed" im Namen haben (mal abgesehen von diesen fürchterlichen Bezeichnern "buExit_", "buNeu_" etc.). actionPerformed() ist die Methode der Klasse ActionListener und es ruft (zumindest bei mir) falsche Assoziationen hervor, wenn da Methoden sind, die so ähnlich heißen wie actionPerformed(), aber im Grunde nichts damit zu tun haben.

Warum nicht so?
Java:
@Override
public void actionPerformed(ActionEvent e) {
    beendeSpiel();
}
oder so (je nach Bedarf)?
Java:
@Override
public void actionPerformed(ActionEvent e) {
    starteNeuesSpiel();
}

Und verwende doch bitte Arrays und setze nicht jede Variable a, b, c, d, e, f oder eins, zwei, drei, vier, fuenf sechs einzeln 😱
dehlens Code halte ich für kein besonders gutes Beispiel bezüglich Programmierstil :/ (ein "Lotto"-Konstruktor wirft eine IOException wtf :bahnhof: )
 
du musst das ganze in einen [c]try and catch[/c] block packen....ABER

warum machst du eine GUI und lässt die Zahlen über die Console eingeben?
 
Und verwende doch bitte Arrays und setze nicht jede Variable a, b, c, d, e, f oder eins, zwei, drei, vier, fuenf sechs einzeln
Das habe ich leider noch nicht gerlent .... wie gesagt ich bin totaler Anfänger 😳

dehlens Code halte ich für kein besonders gutes Beispiel bezüglich Programmierstil :/ (ein "Lotto"-Konstruktor wirft eine IOException wtf )

Kann schon sein das der Stil unter aller sau ist aber ich versteh ihn 😀


warum machst du eine GUI und lässt die Zahlen über die Console eingeben?

Beim richtigen Lotto musst du deine Zahlen ja auch selber eingeben oder hab ich das jetzt falsch verstanden???:L
 
okey Merk ich mir 😉

wie kann ich diesen Fehler beheben?
Wenn ich den weg habe müsste es eigentlich Funktionieren🙂
Ich weiß leider nicht was mit

Java:
IOException; must be caught or declared to be thrown

gemeint ist.

Java:
LOTTO.java:145:29: unreported exception java.io.IOException; must be caught or declared to be thrown
    eingabe = input.readLine();
                            ^
LOTTO.java:178:43: unreported exception java.io.IOException; must be caught or declared to be thrown
    eins = Integer.parseInt(input.readLine());
                                          ^
LOTTO.java:179:43: unreported exception java.io.IOException; must be caught or declared to be thrown
    zwei = Integer.parseInt(input.readLine());
                                          ^
LOTTO.java:180:43: unreported exception java.io.IOException; must be caught or declared to be thrown
    drei = Integer.parseInt(input.readLine());
                                          ^
LOTTO.java:181:43: unreported exception java.io.IOException; must be caught or declared to be thrown
    vier = Integer.parseInt(input.readLine());
                                          ^
LOTTO.java:182:44: unreported exception java.io.IOException; must be caught or declared to be thrown
    fuenf = Integer.parseInt(input.readLine());
                                           ^
LOTTO.java:183:44: unreported exception java.io.IOException; must be caught or declared to be thrown
    sechs = Integer.parseInt(input.readLine());
                                           ^
7 errors
 
@Haave mir ist klar das mein Programm sehr hässlich war, doch ich habe ja nur das Programm dahingehend verbessert, damit er es wenigstens kompilieren kann
natürlich sollten a,b,c,d,e,f usw einfach in ein array gepackt werden und natürlich sollte man im Konstruktor nicht throw IOException schreiben, nur hatte ich es hingeschrieben, damit er wenigstens sein Programm verbessern kann
 
Simple, unschöne Lösung wäre, dass du einfach in jeden Methodenkopf
Code:
throws IOException
vor die öffnende geschweifte Klammer schreibst. Was das genau bedeutet, solltest du dann beizeiten mal nachlesen.
Du kannst auch, wie jgh schrieb, die beanstandete Methode mit try-catch umhüllen, aber vielleicht wird das hier schon zu kompliziert.
 
okey Merk ich mir 😉

wie kann ich diesen Fehler beheben?
Wenn ich den weg habe müsste es eigentlich Funktionieren🙂
Ich weiß leider nicht was mit

Java:
IOException; must be caught or declared to be thrown

gemeint ist.

Java:
LOTTO.java:145:29: unreported exception java.io.IOException; must be caught or declared to be thrown
    eingabe = input.readLine();
                            ^
LOTTO.java:178:43: unreported exception java.io.IOException; must be caught or declared to be thrown
    eins = Integer.parseInt(input.readLine());
                                          ^
LOTTO.java:179:43: unreported exception java.io.IOException; must be caught or declared to be thrown
    zwei = Integer.parseInt(input.readLine());
                                          ^
LOTTO.java:180:43: unreported exception java.io.IOException; must be caught or declared to be thrown
    drei = Integer.parseInt(input.readLine());
                                          ^
LOTTO.java:181:43: unreported exception java.io.IOException; must be caught or declared to be thrown
    vier = Integer.parseInt(input.readLine());
                                          ^
LOTTO.java:182:44: unreported exception java.io.IOException; must be caught or declared to be thrown
    fuenf = Integer.parseInt(input.readLine());
                                           ^
LOTTO.java:183:44: unreported exception java.io.IOException; must be caught or declared to be thrown
    sechs = Integer.parseInt(input.readLine());
                                           ^
7 errors

Du musst halt eine Exception werfen also try {
Anweisung
}
catch(Typ Objekt) {
Anweisung
}

Desweiteren solltest du dir wirklich die Arrays angucken und nicht begründen da 12 variablen zu nehmen nur weil du es verstehst
ich hatte das lediglich als Beispiel gepostet damit du den Sinn verstehst Programmiertechnisch gesehen ist das Beispiel absolut miserabel, um nur Gui zu nehmen musst du halt die zahlen per setText() bzw getText() setzten bzw auslesen
 
Du kannst auch, wie jgh schrieb, die beanstandete Methode mit try-catch umhüllen, aber vielleicht wird das hier schon zu kompliziert.

Jap was mit dem try-catch gemeint ist versteh ich nicht ganz gibt es noch einen anderen unkomlizierteren weg?

ICh versuchs mal 😉
Zum Verständnis was bedeutet/bewirkt das try -catch?
 
Der Fehler wird immer
Java:
eins = Integer.parseInt(input.readLine[B]HIER[/B]());
angezeigt heißt das es dann so Aussehen muss?
Java:
eins = Integer.parseInt(input.readLine
try{()});

Ne das macht keinen Sinn ;(;(;(

Java:
try {
eins}
catch { 
= Integer.parseInt(input.readLine());
}

???:L???:L???:L
 
Habs gelesen nur was ist bei meinen 6 Fehlern die Ausname???:L

Java:
 eins = Integer.parseInt(input.readLine());
    zwei = Integer.parseInt(input.readLine());
    drei = Integer.parseInt(input.readLine());
    vier = Integer.parseInt(input.readLine());
    fuenf = Integer.parseInt(input.readLine());
    sechs = Integer.parseInt(input.readLine());
 
Java:
try {
			 eins = Integer.parseInt(input.readLine());
    zwei = Integer.parseInt(input.readLine());
    drei = Integer.parseInt(input.readLine());
    vier = Integer.parseInt(input.readLine());
    fuenf = Integer.parseInt(input.readLine());
    sechs = Integer.parseInt(input.readLine());

		} catch (NumberFormatException nf) {
// was auch immer du dann ausgeben, oder machen möchtest
}
 
Habe mich mal gerade hingesetzt und dein Programm überarbeitet, so dass es hoffentlich auch @Haave gefällt 😀

Das heißt ich habe dir die Gui geschrieben, jetzt musst du nur noch die Methoden schreiben und die entsprechenden ActionListener befüllen, das sollte nicht mehr das Problem sein, doch mit meiner Varianten hast du jetzt gefühlte 10000 zeilen weniger Code
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Lotto extends JFrame {

    public Lotto() {
        // Titel
        super("Lotto");
        // initialisiere die GUI
        init_gui();
    }

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

   

    private JButton start,reset, exit;
    private JPanel bPanel,fieldPanel,genPanel;
  

 
    private JTextField input[] = new JTextField[6];
    private JTextField genFields[] = new JTextField[6];







    private void init_gui() {
    JPanel fieldPanel = new JPanel();
    JPanel genPanel = new JPanel();
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


    fieldPanel.setLayout (new FlowLayout (FlowLayout.CENTER, 10, 10));
    genPanel.setLayout (new FlowLayout (FlowLayout.CENTER, 10, 10));  
        for (int i = 0;i<6;i++) {
        
        input[i] = new JTextField("");
        input[i].setPreferredSize( new Dimension(50,50) ) ;
       
        
        
       fieldPanel.add(input[i]); 
    }
    
    for (int j = 0;j<6;j++) {
        
        genFields[j] = new JTextField("");
        genFields[j].setPreferredSize( new Dimension(50,50) ) ;
       
        
        
       genPanel.add(genFields[j]); 
    }
    

        
    
        start = new JButton("Starten");
        start.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

            }
        });
        
        reset = new JButton("Neu");
        reset.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

            }
        });
        
       
        exit = new JButton("Exit");
        exit.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

            }
        });
       
       
    
        bPanel = new JPanel();
       
        bPanel.add(start);
        bPanel.add(reset);
        bPanel.add(exit);

    
       
        getContentPane().add(bPanel, BorderLayout.SOUTH);
        getContentPane().add(fieldPanel, BorderLayout.NORTH);
        getContentPane().add(genPanel, BorderLayout.CENTER);
        pack();
        setVisible(true);
    }
}
 
Code:
init_gui();
->
Code:
initGui();

Ansonsten wird es glaub ich mal Zeit dem TO zu raten sich irgendeine Lernquelle ranzuschaffen. Er ist jetzt hier einmal quer durch die API und zurück gesprungen, mit total zusammenhangslosen Fragen und den einfachsten Fehlermeldungen, die er nicht versteht. Das bringt nix.. Also bitte Pazago: Kuck dir die Java-Insel an, oder die Videos aus meiner Signatur, oder sonst was - und wenn du die Basics verstehst, dann kannst du nochmal mit GUI kommen. Aber im Moment bitte nicht...
 
Ich kann dir auch nur den Tipp geben erstmal die Finger von grafischen Oberflächen wegzulassen. Deine Kenntnisse scheinen dafür noch nicht auszureichen. Die Problemstellung ist wahrscheinlich auch ohne Oberfläche schon kompliziert genug für dich. Ich hab dir mal eine mögliche Lösung für ein Lotto-Programm erstellt:

Java:
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;


public class Lotto {
	
	public static void main(String[] args) {
		final int max = 49;
		final int n = 6;
		
		// Tipp einlesen
		int[] guess = getInput(n, max);
		
		// Lösung generieren
		int[] truth = generate(max);
		shuffle(truth);
		truth = choose(truth, n);
		
		// Anzahl Treffer ermitteln
		int matches = countMatches(guess, truth);
		
		// Ausgabe
		System.out.println("Tipp: " + Arrays.toString(sort(guess)));
		System.out.println("Lösung: " + Arrays.toString(sort(truth)));
		System.out.println("Treffer: " + matches);
	}
		
	
	private static int[] getInput(int n, int max) {
		if(n < 0 || max < n) {
			throw new IllegalArgumentException();
		}
		// gibt ein Array mit n unterschiedlichen Zahlen zwischen 1 und max zurück
		Scanner scanner = new Scanner(System.in);
		int[] input = new int[n];
		for(int i = 0; i < n; i++) {
			// Eingabe wiederholen bis gültige Zahl eingegeben wurde
			int value;
			do {
				System.out.print("Eingabe der " + (i + 1) + ". Zahl: ");
				value = scanner.nextInt();
				// mit find überprüfen ob Zahl schon einmal eingegeben wurde
			} while(value < 1 || max < value || find(input, value) != -1);
			input[i] = value;
		}
		return input;
	}

	
	private static int[] generate(int max) {
		if(max < 0) {
			throw new IllegalArgumentException();
		}
		// gibt ein Array mit den Zahlen von 1 bis max zurück
		int[] array = new int[max];
		for(int i = 0; i < array.length; i++) {
			array[i] = i + 1;
		}
		return array;
	}
	
	
	private static void shuffle(int[] array) {
		if(array == null) {
			throw new NullPointerException();
		}
		// mischt das übergebene Array indem jedes Element
		// mit einem zufälligen anderen vertauscht wird
		Random random = new Random();
		for(int i = 0; i < array.length; i++) {
			int j = random.nextInt(array.length);
			// tauschen
			int temp = array[i];
			array[i] = array[j];
			array[j] = temp;
		}
	}

	
	private static int[] choose(int[] array, int n) {
		if(array == null) {
			throw new NullPointerException();
		}
		if(n < 0 || array.length < n) {
			throw new IllegalArgumentException();
		}
		// gibt ein Array mit den ersten n Elementen des übergebenen Arrays zurück
		int[] choice = new int[n];
		for(int i = 0; i < n; i++) {
			choice[i] = array[i];
		}
		return choice;
	}
	

	private static int countMatches(int[] first, int[] second) {
		if(first == null || second == null) {
			throw new NullPointerException();
		}
		// zählt wieviele Zahlen aus first in second enthalten sind
		int matches = 0;
		for(int i = 0; i < first.length; i++) {
			if(find(second, first[i]) != -1) {
				matches++;
			}
		}
		return matches;
	}

	
	private static int[] sort(int[] array) {
		if(array == null) {
			throw new NullPointerException();
		}
		// sortiert das übergebene Array aufsteigend mit BubbleSort
		int n = array.length - 1;
		boolean swapped;
		do {
			swapped = false;
			for(int i = 0; i < n; i++) {
				if(array[i] > array[i + 1]) {
					int temp = array[i];
					array[i] = array[i + 1];
					array[i + 1] = temp;
					swapped = true;
				}
			}
			n--;
		} while(swapped);
		return array;
	}
	
	
	private static int find(int[] array, int value) {
		if(array == null) {
			throw new NullPointerException();
		}
		// gibt den Index von value in array zurück 
		// oder null falls value nicht enthalten ist
		for(int i = 0; i < array.length; i++) {
			if(array[i] == value) {
				return i;
			}
		}
		return -1;
	}

}

Statt shuffle könnte man Collections.shuffle und statt sort Arrays.sort oder Collections.sort verwenden, aber so siehst du wenigstens wie man Mischen und Sortieren implementieren kann.

Bei dieser Lösung ist sichergestellt, dass die Zahlen auch wirklich verschieden und nur aus dem Intervall von 1 bis 49 sind. Außerdem lässt es sich auch für andere Varianten als 6 aus 49 verwenden.
 
Java:
    if(a==b||a==c||a==d||a==e||a==f) {
    a++;
    }
    if(b==a||b==c||b==d||b==e||b==f) {
    b++;
    }
    if(c==b||c==a||c==d||c==e||c==f) {
    c++;
    }
    if(d==b||d==c||d==a||d==e||d==f) {
    d++;
    }
    if(e==b||e==c||e==d||e==a||e==f) {
    e++;
    }
    if(f==b||f==c||f==d||f==e||f==a) {
    f++;
    }

Das funktioniert nicht sobald z.B. drei Zahlen gleich sind (dann sind danach immer noch 2 gleich) oder 2 mal die 49 dabei ist (gibt dann eine 50).

Eine Lösung mit Sets wie auf der ersten Seite schon mal vorgeschlagen wurde ist denke ich am besten und kürzesten, aber mit Arrays ist es (wie gezeigt) auch machbar.
 
So hatte nicht besseres zu tun deswegen habe ich mal die Gui-Version fertiggestellt, ist nur für andere Leute die vielleicht mal hier im Forum nach einem Lotto Programm suchen, an den TO dir würde ich auch wie meine Vorredner empfehlen dir ein Buch oder einen Videokurs zur Hand zu nehmen und das ganze erst einmal halbwegs zu lernen.

Naja also jetzt hier meine fassung: (noch nicht enthalten ist, dass die eingegeben Werte nicht die gleichen seien dürfen, sonst ist hoffe ich alles implementiert =)

Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;


public class Lotto extends JFrame {

    public Lotto() {
        // Titel
        super("Lotto");
        // initialisiere die GUI
        init_gui();
    }

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

   

    private JButton start,reset, exit;
    private JPanel bPanel,fieldPanel,genPanel;
  

 
    private JTextField input[] = new JTextField[6];
    private JTextField genFields[] = new JTextField[6];
    private int[]genKeys = new int[6];
    private int[]inputKeys = new int[6];
    int[] ziehung = new int[6];
 

   
    
    
    
    public void imBereich() {
        for (int i = 0; i<6;i++) {
            
    if(Integer.parseInt(input[i].getText()) < 1||Integer.parseInt(input[i].getText()) >49) {
                             JOptionPane.showMessageDialog(null, "Nur Zahlen von 0-49" ,"Nachricht", JOptionPane.OK_CANCEL_OPTION);
                             
                            }
                        }
        
        
    }
    
    
    
   public void ziehen(){
    
       
    
    Random r = new Random();
    for (int i = 0; i < 6; i++) {
        ziehung[i] = r.nextInt(49) + 1; // 1-49
        if(ziehung[i] == ziehung[i]) {
        ziehung[i]++;
        }
        genFields[i].setText(ziehung[i] + "");
    }
    }


    private void init_gui() {
    JPanel fieldPanel = new JPanel();
    JPanel genPanel = new JPanel();

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


    fieldPanel.setLayout (new FlowLayout (FlowLayout.CENTER, 10, 10));
    genPanel.setLayout (new FlowLayout (FlowLayout.CENTER, 10, 10));  

        for (int i = 0;i<6;i++) {
        
        input[i] = new JTextField("");
        input[i].setPreferredSize( new Dimension(50,50) ) ;
        input[i].setDocument(new IntegerDocument());
        
        
       fieldPanel.add(input[i]); 
    }
    
    for (int j = 0;j<6;j++) {
        
        genFields[j] = new JTextField("");
        genFields[j].setPreferredSize( new Dimension(50,50) ) ;
        genFields[j].setDocument(new IntegerDocument());
        
        
       genPanel.add(genFields[j]); 
    }
    

        
    
        start = new JButton("Überprüfen");
        start.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                
                
                ziehen();
                imBereich();

                int richtige = 0; 
                
                
                
                for (int j = 0;j<6;j++) {
                    for (int i = 0;i<6;i++) {
                       
                  try {

                genKeys[j] = Integer.parseInt(genFields[j].getText());
                inputKeys[i] = Integer.parseInt(input[i].getText());
                 
            }
            catch (NumberFormatException nfe) {
                         JOptionPane.showMessageDialog(null, "Unerlaubte Zeichen!" ,"Nachricht", JOptionPane.OK_CANCEL_OPTION);
            }
            
   if(genKeys[j] == inputKeys[i]) {
                    richtige++;
                    
       } 
        
            }
        }
       
        
         JOptionPane.showMessageDialog(null, "Sie haben "+richtige+" Richtige" ,"Nachricht", JOptionPane.OK_CANCEL_OPTION);
    
        }

            
        });
        
        reset = new JButton("Neu");
        reset.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                for (int i = 0; i<6;i++) {
                    for(int j = 0;j<6;j++) {
                        
                        input[i].setText("");
                        genFields[j].setText("");
                    }
                }

            }
        });
        
       
        exit = new JButton("Exit");
        exit.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.exit(0);

            }
        });
       
       
    
        bPanel = new JPanel();
       
        bPanel.add(start);
        bPanel.add(reset);
        bPanel.add(exit);


        


        getContentPane().add(fieldPanel, BorderLayout.NORTH);
        getContentPane().add(genPanel, BorderLayout.CENTER);
        getContentPane().add(bPanel, BorderLayout.SOUTH);

        
        pack();
        setVisible(true);
    }
}

//Diese Klasse ist dazu da, dass man in den Textfeldern nur Zahlen eingeben kann
Java:
import javax.swing.text.*;

public class IntegerDocument extends PlainDocument
{
   @Override
   public void insertString(int offset, String s, AttributeSet attributeSet) throws BadLocationException
    {
      try{
             Integer.parseInt(s);
         }
         catch(Exception ex)
         {
            return ;
         }
      super.insertString(offset,s, attributeSet);
    }
}
 
Huhu!

Sage mal, wird hier eigentlich auch des Thema Euro-Jackpot thematisiert, sprich spielt des hier jemand? Ich würde gerne mal gucken, wie des so geht, hätte aber vorher gerne 'nen Austausch mit Erfahrungen 🙂
 
Hallöchen,
ich spiele ausländisches Lotto. Die USA Powerball Zahlen lasse ich automatisch generieren. Ich hab schon zweimal das Geld im Lotto gewonnen🙂
 
Zuletzt bearbeitet von einem Moderator:

Zurück
Oben