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");
              }
  }
 

hdi

Top Contributor
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
 

dehlen

Bekanntes Mitglied
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 :D
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:

dehlen

Bekanntes Mitglied
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(.....);
}
 

hdi

Top Contributor
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 ;)
 

dehlen

Bekanntes Mitglied
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
 
A

atPazago

Gast
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.
 

dehlen

Bekanntes Mitglied
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
 
A

atPazago

Gast
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 ;)
 

Pazago

Mitglied
@ 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 :eek:

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");
              }
 

dehlen

Bekanntes Mitglied
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
 
A

atPazago

Gast
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?
 

Pazago

Mitglied
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.
 

Pazago

Mitglied
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");
  }
}
 

dehlen

Bekanntes Mitglied
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:

jgh

Top Contributor
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();
 

dehlen

Bekanntes Mitglied
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
 

Pazago

Mitglied
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.
 

dehlen

Bekanntes Mitglied
achja was mir noch aufgefallen ist
:
Java:
        buSpielen_ActionPerformed(evt);

was soll das sein ?!
 

dehlen

Bekanntes Mitglied
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();
 

dehlen

Bekanntes Mitglied
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");
  }
}
 

Pazago

Mitglied
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
 

Haave

Top Contributor
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 :eek:
dehlens Code halte ich für kein besonders gutes Beispiel bezüglich Programmierstil :/ (ein "Lotto"-Konstruktor wirft eine IOException wtf :bahnhof: )
 

jgh

Top Contributor
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?
 

Pazago

Mitglied
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 :oops:

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 :D


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
 

Pazago

Mitglied
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
 

dehlen

Bekanntes Mitglied
@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
 

Haave

Top Contributor
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.
 

dehlen

Bekanntes Mitglied
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
 

Pazago

Mitglied
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?
 

Pazago

Mitglied
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
 

Pazago

Mitglied
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());
 

jgh

Top Contributor
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
}
 

dehlen

Bekanntes Mitglied
Habe mich mal gerade hingesetzt und dein Programm überarbeitet, so dass es hoffentlich auch @Haave gefällt :D

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);
    }
}
 

hdi

Top Contributor
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...
 

andiv

Bekanntes Mitglied
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.
 

andiv

Bekanntes Mitglied
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.
 

dehlen

Bekanntes Mitglied
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);
    }
}
 

Julius_Mil

Neues Mitglied
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 :)
 

Vann22

Neues Mitglied
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:
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
C Lotto Spiel Java Basics - Anfänger-Themen 23
2 Lotto-Spiel Java Basics - Anfänger-Themen 9
N Lotto Spiel Java Basics - Anfänger-Themen 12
U Lotto-Zahlen App Java Basics - Anfänger-Themen 34
A Lotto Programm Java Basics - Anfänger-Themen 3
J Lotto 6 aus 49 Java Basics - Anfänger-Themen 7
C Lotto 3, 4, 5, 6 Richtige nach x Ziehungen ermittelt.. Java Basics - Anfänger-Themen 7
T Lotto Zahlen in Array speichern Java Basics - Anfänger-Themen 2
Z Lotto-Programm Wieso klappt das? Java Basics - Anfänger-Themen 8
K Methoden Lotto mit sechs richtigen Java Basics - Anfänger-Themen 10
Z Lotto mit Arrays schreiben Java Basics - Anfänger-Themen 4
X Lotto Zahlen Ziehung Java Basics - Anfänger-Themen 26
M Lotto Programm Java Basics - Anfänger-Themen 18
H Methoden Lotto-Programm, Methoden ordnen & umbennen Java Basics - Anfänger-Themen 4
1 Ein weiteres Lotto programm Java Basics - Anfänger-Themen 6
R Lotto Zahlen Java Basics - Anfänger-Themen 4
B Lotto mittels TreeSet Java Basics - Anfänger-Themen 3
L Lotto 6 aus 49 Java Basics - Anfänger-Themen 11
P Zufallszahlen fuer Lotto generieren Java Basics - Anfänger-Themen 28
K Fehler in Lotto Programm Java Basics - Anfänger-Themen 8
G Lotto Zufallszahlen zählen Java Basics - Anfänger-Themen 3
G Zufalls Lotto Zahlen Ausgeben Java Basics - Anfänger-Themen 16
A Lotto Zahlen Ausgeben Java Basics - Anfänger-Themen 2
X Lotto Zufallszahlen mit ArrayList erstellen Java Basics - Anfänger-Themen 3
V Doppelte Zahlen bei Lotto verhindern Java Basics - Anfänger-Themen 11
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
I Threads Spiel gol Java Basics - Anfänger-Themen 6
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
J ArrayList vergleichen im spiel Mastermind Java Basics - Anfänger-Themen 2
enesss tictactoe spiel Java Basics - Anfänger-Themen 5
Jxhnny.lpz TicTacToe Spiel vs Computer. (Probleme) Java Basics - Anfänger-Themen 7
httprt Probleme bei dem erstellen von leveln in meinem Spiel Java Basics - Anfänger-Themen 2
berserkerdq2 Habe ein Spiel entwickelt, dass immer in der 4 Runde einen cast-Fehler erhält Java Basics - Anfänger-Themen 3
berserkerdq2 Spiel hängt sich immer in der 4 Runde auf, obwohl ich jede Runde das gleiche mache Java Basics - Anfänger-Themen 1
Ekooekoo Hilfe spiel Java Basics - Anfänger-Themen 5
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
Kennewick Basketball Spiel Ergebnisse Java Basics - Anfänger-Themen 11
X Erste Schritte Hilfe bei einem kleinen Spiel. Java Basics - Anfänger-Themen 19
D Snake-Spiel ähnliche Aufgabe Hilfe Java Basics - Anfänger-Themen 3
R Hangman-Spiel-zufälliges Wort ermitteln Java Basics - Anfänger-Themen 4
JEP1 Java Dialog Fenster schließen Spiel Java Basics - Anfänger-Themen 0
I Simples Risiko-Spiel Java Basics - Anfänger-Themen 5
Hallolu Pong-Spiel: Schläger schneller werden lassen Java Basics - Anfänger-Themen 9
M Java Spiel wie Wer wird Millionär Java Basics - Anfänger-Themen 1
T Startbildschirm für ein Spiel erstellen Java Basics - Anfänger-Themen 0
Z Kein überprüfen des gesamten Arrays möglich.(Viergewinnt Spiel) Java Basics - Anfänger-Themen 6
G Ufo Spiel programmieren Java Basics - Anfänger-Themen 13
C Java Spiel Java Basics - Anfänger-Themen 3
J Spiel programmieren Java Basics - Anfänger-Themen 16
S Spiel-Programmieren. Wenn ein Objekt den anderen berührt. Java Basics - Anfänger-Themen 6
B Memory Spiel Java Basics - Anfänger-Themen 29
J Memory-Spiel Aktivierung der Methode mit Timer Java Basics - Anfänger-Themen 44
Kamy Ein einfaches "Vier Gewinnt" Spiel für Anfängerin Java Basics - Anfänger-Themen 51
A Breakout-Spiel , Ball mit Platten abprallen lassen Java Basics - Anfänger-Themen 1
S Spiel programmieren mit Java Java Basics - Anfänger-Themen 11
Olis Erste Schritte Simples Memory Spiel möglich? Java Basics - Anfänger-Themen 1
J Spiel mit Button klick starten Java Basics - Anfänger-Themen 9
C Rekursives Backtracking beim Spiel Peg Java Basics - Anfänger-Themen 22
M Spiel programmieren Java Basics - Anfänger-Themen 16
Spencer Reid Feedback zu kleinem Spiel Java Basics - Anfänger-Themen 4
kokojamboo92 Spiel programmieren Java Basics - Anfänger-Themen 1
R Kleines Java Spiel funktioniert nicht. Java Basics - Anfänger-Themen 2
I Spiel Java Basics - Anfänger-Themen 34
H ein einfaches Tic Tac Toe Spiel Java Basics - Anfänger-Themen 1
I Spiel programmieren. Java Basics - Anfänger-Themen 16
B Hilfe bei Escape - Spiel Java Basics - Anfänger-Themen 6
S Java-Spiel Java Basics - Anfänger-Themen 2
M Nim-Spiel geht in den negativen Bereich Java Basics - Anfänger-Themen 1
K Klassen Registrierungsseite für ein Spiel Java Basics - Anfänger-Themen 6
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 3
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 2
M Brauche Tipps für ein Spiel Java Basics - Anfänger-Themen 4
S Probleme mit GamGrid Spiel-Erstellung => Actor reagiert nicht auf Tastatur Java Basics - Anfänger-Themen 2
Mxxxt Mosaik Spiel - Steuerpanel wird nicht angezeigt Java Basics - Anfänger-Themen 5
M Erste Schritte Zufallszahl Spiel Problem Java Basics - Anfänger-Themen 7
Z Erste Schritte Kleines 2D. Spiel Objekt Bewegung funktioniert nicht Java Basics - Anfänger-Themen 2
H Spiel Kniffel: Gesamtes Array untersuchen. Java Basics - Anfänger-Themen 15
Tacofan Hangman als fertiges Spiel Java Basics - Anfänger-Themen 7
M Array und Objektorientierung? - TicTacToe Spiel Java Basics - Anfänger-Themen 43
C Klassen Sudoku-Spiel Werte werden nicht gesetzt Java Basics - Anfänger-Themen 4
K Kleines Spiel auf Java programmieren Java Basics - Anfänger-Themen 2
W Tic Tac Toe Spiel ohne Arrays Java Basics - Anfänger-Themen 7
S Im objektorientiertem "Spiel" kämpfen Java Basics - Anfänger-Themen 3
I Klassen Umsetzungsfrage zu Spiel "Zuul" Java Basics - Anfänger-Themen 3
F Mastermind Spiel Java Basics - Anfänger-Themen 9
H Liste ausgeben (Spiel Hey Fisch (software-challenge) ändern Anzahl Fische) Java Basics - Anfänger-Themen 1
F Game-Engine für textbasierendes Spiel: Architektur? Java Basics - Anfänger-Themen 9
K Erste Schritte Frage Antwort Spiel - Fragen zur Planung Java Basics - Anfänger-Themen 2
J Java Spiel Zufallsauswahl für Zugbeginn Java Basics - Anfänger-Themen 3
J Frage Antwort Spiel - Wie Zeitcountdown realisieren? Java Basics - Anfänger-Themen 2
L Erste Schritte Spiel: Glückliches Sieben Java Basics - Anfänger-Themen 3
T Hangman spiel Java Basics - Anfänger-Themen 5
J 2 Pc's - Spiel gegeneinander ?! Java Basics - Anfänger-Themen 3
V Spiel Programmieren Java Basics - Anfänger-Themen 9
P 2D-Spiel und Bildschirmgröße Java Basics - Anfänger-Themen 2
O Methoden Fehlermeldung(Illegal start of expression) bei 4-Gewinnt-Spiel Java Basics - Anfänger-Themen 5
T Blöcke für ein Jump and Run Spiel Java Basics - Anfänger-Themen 8
S 2D-Spiel mit Threads... Java Basics - Anfänger-Themen 3
S 2D-Spiel im Vollbild an größe anpassen? Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben