- 
	17.03.2014, 14:06 #1U-Labs Legende  
 - Registriert seit
- 19.11.2011
- Beiträge
- 2.128
 Thanked 1.937 Times in 1.180 Posts Lottozahlen - Auswertung , Methode hängt Lottozahlen - Auswertung , Methode hängtHallo. 
 
 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 #2Projektleitung    
 - Registriert seit
- 15.11.2011
- Beiträge
- 8.457
- Blog Entries
- 5
 Thanked 9.518 Times in 3.333 Posts AW: Lottozahlen - Auswertung , Methode hängt AW: Lottozahlen - Auswertung , Methode hängtDebuggen, Breakpoints setzen und die Werte prüfen? Gegebenenfalls Anweisung für Anweisung. 
 
 
- 
	17.03.2014, 14:19 #3U-Labs Legende  
 - Registriert seit
- 19.11.2011
- Beiträge
- 2.128
 Thanked 1.937 Times in 1.180 Posts AW: Lottozahlen - Auswertung , Methode hängt AW: Lottozahlen - Auswertung , Methode hängtDas Problem ist, die Werte stimmen. Dennoch hängt die Methode irgendwo. 
 
- 
	17.03.2014, 15:20 #4 AW: Lottozahlen - Auswertung , Methode hängt AW: Lottozahlen - Auswertung , Methode hängtAuf 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/BedeutungVon !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 #2Von Valorax im Forum Digitale Bild- und VideobearbeitungAntworten: 0Letzter Beitrag: 04.08.2012, 20:24
- 
  [PS vs. Gimp] xTracZ vs. Comu - AuswertungVon 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.
 
									 
														 
														 
					
					
					
				