-
17.03.2014, 14:06 #1
- Registriert seit
- 19.11.2011
- Beiträge
- 2.128
Thanked 1.936 Times in 1.180 PostsLottozahlen - Auswertung , Methode hängt
Hallo.
Ich habe ein Problem und zwar funktioniert die Lottozahlen - Auswertung meines Programmes nicht.
Wenn ich ein Objekt der Lottoklasse erstelle , neue Zahlen generiere und dann die checkwin Methode aufrufe,
bleibt das Programm dort irgendwie stecken.
class Lotto
{
private int[] lottozahlen = new int[7];
private int[] righttipped = new int[7];
public int[] DoBubbleSort(int[] b)
{
boolean tau;
do
{
tau = false;
for (int i = 0; i < b.length - 1; i++)
{
if (b[i] > b[i + 1])
{
int t = b[i];
b[i] = b[i + 1];
b[i + 1] = t;
tau = true;
}
}
} while (tau);
return b;
}
public String getZahlenString()
{
String c = "";
for (int i = 0;i < lottozahlen.length ; i++)
{
c = c + Integer.toString(lottozahlen[i]);
if(i < lottozahlen.length -1) c = c + " ;" ;
}
return c;
}
private boolean checkifexists(int a)
{
for(int i = 0; i < lottozahlen.length -1 ; i++)
{
if(lottozahlen[i] == a) return true;
}
return false;
}
private int getrandomdigit()
{
Random zufall = new Random();
int z = zufall.nextInt(49);
while(checkifexists(z) && z > 0){z = zufall.nextInt(49);}
return z;
}
public int[] getnewdigits()
{
for(int i = 0; i < lottozahlen.length -1 ; i++) {lottozahlen[i] = getrandomdigit();}
lottozahlen[6] = getrandomdigit();
lottozahlen = DoBubbleSort(lottozahlen);
return lottozahlen;
}
public int[] checkwin(int[] a)
{
int right = 0;
int[] t = DoBubbleSort(a);
for (int x = 0; x < 7; x++)
{
if (t[x] == lottozahlen[x])
{
right++;
righttipped[x] = t[x];
}
else
{
righttipped[x] = -1;
}
}
int[] tog = new int[right];
for (int c = 0;c < right; c++)
{
if( !(righttipped[c] == -1)) tog[c] = righttipped[c];
}
return tog;
}
}
Aufruf:
public void Ziehung_ActionPerformed(ActionEvent evt)
{
if (! (CurrentTip.getText().length() >= 7))
{
LottozahlenErgebnis.setText("Erst muss getippt werden!");
return;
}
Lotto L = new Lotto();
int[] d = L.getnewdigits();
String gezogen = d[0] + " " + d[1] + " " + d[2] + " " + d[3] + " " + d[4] + " " + d[5] + " SZ: " + d[6];
LottozahlenZiehung.setText(gezogen);
int[] z = L.checkwin(gesetztezahlen);
String rightt = z[0] + " " + z[1] + " " + z[2] + " " + z[3] + " " + z[4] + " " + z[5] + " SZ: " + z[6];
LottozahlenErgebnis.setText("Richtige Zahlen: " + z.length);
}
Bei L.Checkwin(gesetztezahlen); geht es nicht weiter, weshalb im Label auch nicht "Richtige Zahlen: ... steht.
Kann mir jemand etwas dazu sagen?
-
17.03.2014, 14:13 #2
- Registriert seit
- 15.11.2011
- Beiträge
- 6.238
- Blog Entries
- 5
Thanked 9.136 Times in 3.010 PostsAW: Lottozahlen - Auswertung , Methode hängt
Debuggen, Breakpoints setzen und die Werte prüfen? Gegebenenfalls Anweisung für Anweisung.
-
17.03.2014, 14:19 #3
- Registriert seit
- 19.11.2011
- Beiträge
- 2.128
Thanked 1.936 Times in 1.180 PostsAW: Lottozahlen - Auswertung , Methode hängt
Das Problem ist, die Werte stimmen. Dennoch hängt die Methode irgendwo.
-
17.03.2014, 15:20 #4
AW: Lottozahlen - Auswertung , Methode hängt
Auf dem ersten Blick kann ich nichts Blockierendes feststellen.
Aber mir ist etwas Unschönes aufgefallen; ich weiß nicht, ob dieses Verhalten explizit von dir gewollt ist. Arrays werden call-by-reference übergeben. Deine DoBubbleSort-Methode verändert die Eingabedaten. Diese Veränderungen gelten auch noch nach Verlassen der Methode. Zudem gibst du dieselbe Referenz zurück.
Hast du vorher in C programmiert?
Ein bisschen Sorgen macht mir folgendes Konstrukt:
int[] tog = new int[right];
for (int c = 0;c < right; c++)
{
if( !(righttipped[c] == -1)) tog[c] = righttipped[c];
}
Wenn ich mich beim Überfliegen nicht getäuscht habe, ist es Zufall wenn das Ergebnis dieses Ausschnittes das tut, was er eigentlich soll.
Gehen wir einmal davon aus, dass man 3 Richtige getippt hat. Das Array tog hat also eine Länge von 3. Die Schleife zählt den Index von 0 bis 2 hoch. Das Array righttipped hat allerdings eine Länge von 7. Das bedeutet, dass die letzten 4 Elemente aus dem Array keiner Überprüfung unterzogen werden. Je nachdem welchen Index die richtig getippten Zahlen im righttipped-Array haben, kann es vorkommen, dass einige Elemente des tog-Arrays gar nicht initialisiert werden (außer die default 0 initialization).
Aber da kann ich mich auch täuschen, ich habe es mir nicht genauer angesehen.
-
The Following User Says Thank You to Nuebel For This Useful Post:
Ähnliche Themen
-
S.M.A.R.T. Daten von Hitachi-Festplatte Auswertung/Bedeutung
Von !lkay im Forum HardwareAntworten: 1Letzter Beitrag: 10.03.2014, 16:36 -
Paysafekarte Auscash Methode!
Von Jack DanieLs im Forum Internet und TechnikAntworten: 11Letzter Beitrag: 07.10.2012, 10:17 -
Auswertung - GFX Battle #2
Von Valorax im Forum Digitale Bild- und VideobearbeitungAntworten: 0Letzter Beitrag: 04.08.2012, 20:24 -
[PS vs. Gimp] xTracZ vs. Comu - Auswertung
Von xTracZ im Forum ShowroomAntworten: 10Letzter Beitrag: 17.05.2012, 12:44 -
Taskleiste hängt?
Von Silent im Forum WindowsAntworten: 2Letzter Beitrag: 16.04.2012, 15:42
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.