Java Lottozahlen Generator will nicht

Dieses Thema im Forum "Webmaster Hilfe / Programmierer Forum" wurde erstellt von Dark-Nightmare, 18.07.2013.

  1. #1 Dark-Nightmare, 18.07.2013
    Dark-Nightmare

    Dark-Nightmare Erfahrener Benutzer

    Dabei seit:
    21.01.2007
    Beiträge:
    1.807
    Zustimmungen:
    0
    Ort:
    Hamburg
    Moin,
    ich versuche mich gerade, in Java, an GUIs. Mein Versuch war nun ein Lottozahlen Generator zu erstellen. Einfach erstmal nur ein Fenster, ein Knopf und eine Ausgabe. Dies funktioniert auch schon super.

    Mein Problem ist die Klasse mit dem eigentlichen Lotto Programm. Zuerst sah der Code so aus:
    Code:
        
    
        public int[] lottoZahlen() {
    
            int zufallsZahl = 0;
            double temp = 0;
            int zahlen[] = new int[6];
    
            for (int i = 0; i < zahlen.length; i++) {
                temp = Math.random() * (49 - 1);
                zufallsZahl = (int) temp;
                zahlen[i] = zufallsZahl;
            }
            return zahlen;
        }
    Hier kann ich nun beliebig oft den Knopf drücken und mir werden immer wieder neue Zahlen ausgegeben. So sollte es auch sein.

    Nun kann es bei diesem Code aber noch passieren, dass eine Zahl doppelt im Array steht oder sich die 0 einschleicht. Bei der Ausgabe von einer doppelten Zahl und, oder einer 0 ist der "Lottoschein" ungültig.

    Das ganze wollte ich nun abfangen. Aber genau hier entsteht das Problem, dass sich das Programm gerne aufhängt. Entweder hängt es sich schon beim ersten mal Knopfdrücken auf oder das erste mal funktioniert und er hängt sich beim zweiten mal Knopfdrücken auf. Das Programm lässt sich dann auch nur noch über Terminate schließen :/ Leider sehe ich den Fehler einfach nicht...

    Code:
        //Variable zum pruefen ob ein Wert schon im Array enthalten ist
        private boolean schonvorhanden = false;
        //Methode zum berechnen der Lottozahlen
        public int[] lottoZahlen() {
    
            int zufallsZahl = 0;
            double temp = 0;
            int zahlen[] = new int[6];
            
            for (int i = 0; i < zahlen.length; i++) {
                temp = Math.random() * (49 - 1);
                zufallsZahl = (int) temp;
    
                for (int j = 0; j < zahlen.length; j++) {
                    if (zahlen[j] == zufallsZahl) {
                        schonvorhanden = true;
                    }
                }
    
                if (schonvorhanden == false && zufallsZahl != 0) {
                    zahlen[i] = zufallsZahl;
                } else {
                    i = i - 1;
                }
            }
            schonvorhanden = false;
            return zahlen;
        }
    Kann mir jemand weiterhelfen ?
     
  2. AdMan

    schau mal hier: Windows-Wartungs-Tool. Viele Probleme lassen sich damit einfach beheben. Oftmals ist der PC dann auch schneller!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren.
  3. #2 Dark-Nightmare, 19.07.2013
    Dark-Nightmare

    Dark-Nightmare Erfahrener Benutzer

    Dabei seit:
    21.01.2007
    Beiträge:
    1.807
    Zustimmungen:
    0
    Ort:
    Hamburg
    Manchmal muss man sich schon schämen für solche Fragen...

    Problem war, dass sobald schonvorhanden einmal auf true gesetzt worden ist, es innerhalb der Schleife nun immer true war. Damit wurde nun keine Zahl mehr ins Array geschrieben und es wurde immer i -- gerechnet. Es Endstand ein Endlosloop...
    Habe nun schonvorhanden = false direkt unter den else Zweig (innerhalb der for Schleife) geschrieben und nun funktionierst :)
     
  4. #3 Blaxxun, 19.07.2013
    Blaxxun

    Blaxxun aka Noisy

    Dabei seit:
    06.11.2005
    Beiträge:
    6.171
    Zustimmungen:
    0
    Wenn es dir nicht overpowered ist, kannst du bsp. eine ArrayList nutzen, dann wird dein Code etwas übersichtlicher (muss nicht extra eine For-Schleife bauen um zu gucken, ob was in der List/Array ist).

    ArrayList (Java Platform SE 7 )
    Die vorgefertigten Collections sind was tolles und sehr nützlich :)
     
  5. #4 Dark-Nightmare, 19.07.2013
    Dark-Nightmare

    Dark-Nightmare Erfahrener Benutzer

    Dabei seit:
    21.01.2007
    Beiträge:
    1.807
    Zustimmungen:
    0
    Ort:
    Hamburg
    Hey Blaxxun,
    ArrayyList ist ja schon ne coole Sache :D

    Nun hab ich aber ein neues Problem :(
    Ich habe ein Eingabefeld erzeugt. Hier möchte ich eine Zahl einlesen. Diese dann in int umwandeln und an ein andere Methode übergeben. Aber irgendwie haut das nicht hin.

    String zahleins und int zahl1 sind momentan noch Objektvariablen.

    Code:
     JTextField text = new JTextField("Zahl eingeben", JLabel.CENTER);
            text.setBounds(0, 100, 290, 50);
            zahleins = text.getText();
    Darunter wird ein Button erzeugt:
    Code:
            JButton weiter = new JButton("Weiter");
            weiter.setBounds(240, 160, 100, 50);
            weiter.setFont(weiter.getFont().deriveFont((float) 20));
    
            weiter.addActionListener(new ActionListener() {
                public void actionPerformed(final ActionEvent e) {
                    umwandeln();
                }
            });
            
    Code:
       public void umwandeln(){
            zahl1 = Integer.valueOf(zahleins);
            System.out.println(zahl1);
        }
    Umwandeln soll nun eigentlich erstmal nur die Zahlen in Int umwandeln und mir auf der Konsole ausgeben. Hier kommen nun aber tausende Exceptions.
     
  6. Lotus

    Lotus Erfahrener Benutzer

    Dabei seit:
    17.02.2007
    Beiträge:
    2.428
    Zustimmungen:
    0
    Welche Exception kommt denn? Meistens ist es eher nur eine Exception die wirklich von Bedeutung ist, aber diese sagt so ziemlich genau aus wo das Problem liegt.
     
  7. #6 Dark-Nightmare, 19.07.2013
    Dark-Nightmare

    Dark-Nightmare Erfahrener Benutzer

    Dabei seit:
    21.01.2007
    Beiträge:
    1.807
    Zustimmungen:
    0
    Ort:
    Hamburg
    Hi Lotus,
    auch hier wieder der selbe Fehler. Aber nun hab ich's gelernt xD

    Code:
     JTextField text = new JTextField("Zahl eingeben", JLabel.CENTER);
            text.setBounds(0, 100, 290, 50);
            [COLOR="Red"]zahleins = text.getText();[/COLOR]
    Genau hier lese ich nun die Eingabe als String ein. Zu diesem Zeitpunkt hat text aber noch den Inhalt "Zahl eingeben". Das lässt sich aber so schwer in einen Int umwandeln ;) Nun rufe ich zahleins = text.getText(); in umwandeln auf und es funktioniert.

    Aber nun ein Problem, dass ich scheinbar nicht alleine lösen kann.
    Als ich das Programm nun soweit fertig hatte, wollte ich es mal als .jar exportieren um es ausführen zu können. Das funktioniert auch, doch wenn ich es mit BetterZip öffne, sind in der jar auch andere Projekte abgelegt. Z.b. ein Taschenrechner etc. Es wird zwar das richtige Programm ausgeführt aber wie muss ich mein Projekt richtig exportieren, damit nur das eigentlich Projekt dort enthalten ist?
     
  8. Lotus

    Lotus Erfahrener Benutzer

    Dabei seit:
    17.02.2007
    Beiträge:
    2.428
    Zustimmungen:
    0
  9. #8 Dark-Nightmare, 20.07.2013
    Dark-Nightmare

    Dark-Nightmare Erfahrener Benutzer

    Dabei seit:
    21.01.2007
    Beiträge:
    1.807
    Zustimmungen:
    0
    Ort:
    Hamburg
    Hi Lotus,
    die Anleitung habe ich auch schon gefunden. Wenn ich es so mache, kann ich die jar nicht ausführen. Deswegen erstell ich eine runnable jar. Hier kann ich dann die Launch configuration auswählen. Aber irgendwie kommen da auch Projekte mit, die da nicht reingehören...
     
  10. AdMan

    Es ist generell erstmal empfehlenswert alle ggf. veralteten oder fehlerhaften Treiber zu scannen und auf neue zu aktualisieren. Hier kannst du einen Treiber-Scanner downloaden. Das erspart oftmals viel Ärger und hilft gegen diverse Probleme.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren.
  11. Lotus

    Lotus Erfahrener Benutzer

    Dabei seit:
    17.02.2007
    Beiträge:
    2.428
    Zustimmungen:
    0
    Was passiert, wenn du die Projekte vorher schließt (closed) bevor du die runnable jar erstellst?
     
  12. #10 Dark-Nightmare, 23.07.2013
    Dark-Nightmare

    Dark-Nightmare Erfahrener Benutzer

    Dabei seit:
    21.01.2007
    Beiträge:
    1.807
    Zustimmungen:
    0
    Ort:
    Hamburg
    Ich glaube ich hab mich einfach falsch ausgedrückt und es ist richtig was Eclipse dort macht?!

    Also ich habe ein Projekt Uebung und im diesem Projekt sind mehrere packeges. Wenn ich nun eine runnable jar erstelle, finde ich alle packeges, aus dem Projekt, in der Datei wieder.

    -----------
    Noch mal eine andere Frage, bezüglich Arrays.
    Ich hatte noch nicht das Vergnügen mit zwei- bzw. mehrdimensionalen Arrays zu arbeiten.
    Ich habe nun mal ein Array erzeugt und möchte dieses sortieren. Aber irgendwie versteh ich nicht ganz wie ich da vorgehen soll? Ich habe versucht Bubblesort anzupassen aber leider ist mir das nicht wirklich gelungen :(

    Code:
      
    (Das Array wird in einer Main an sort übergeben)
    int [][] array = {{10,30},{4,28},{9,29}};
    ----------------------
    
        public int [][] sort( int [][] array){
          for(int i = 0; i < array.length; i++)  
          { 
            for(int j = 0; j < array[i].length - i - 2; j++)  
            { 
              if(array[i][j] > array[i+1][j])  
              { 
                int[] a =  array[j]; 
                array[j] = array[j+1]; 
                array[j+1] = a; 
              } 
            } 
          } 
          return array; 
        }  
    
    
    Ich hab das mit den mehrdimensionalen Arrays irgendwie noch nicht so ganz verstanden.

    Ein mehrdimensionales Array ist doch ein Array, dass wieder ein Array beinhaltet. Sprich ich erstelle ein Array a und a enthält dann auf dem Index 0, ein Array b und auf Index 1 ein Array c. Dies kann man beliebig weit führen. Nun versteh ich aber noch nicht wie ich diese vergleiche. Vergleiche ich den Inhalt nun des zweiten Arrays?
     
Thema: Java Lottozahlen Generator will nicht
Besucher kamen mit folgenden Suchen
  1. lottozahlen java

    ,
  2. lottozahlen erzeugen mit array

    ,
  3. java array lottozahlen

    ,
  4. Java lotto 1 und 49 erzeugen geneirt (double zufall = Math.random();),
  5. Eurolotto generator Java
Die Seite wird geladen...

Java Lottozahlen Generator will nicht - Ähnliche Themen

  1. Tastaturtester mit Java

    Tastaturtester mit Java: Hallo Leute, ich wollte gerade mal auf die Schnelle ein Tastaturtester mit Java bauen. Grund ist ein neuer Encoder, der nächste Woche...
  2. Java 7

    Java 7: Hallo :) Ich kann mir kein Java Installieren weil er mir in den Programmen schon "Java 7 Update 9" anzeigt. Deinstallieren funktioniert auch...
  3. Java-Programmierung - Fehler bei Ausführung

    Java-Programmierung - Fehler bei Ausführung: Ich habe kürzlich begonnen, mich mit der Programmierung in Java zu beschäftigen. Auf meinem PC habe ich Windows 8 laufen und verwende dias Java...
  4. Hauptmenü für Spiel in Java

    Hauptmenü für Spiel in Java: Hallo Leute, ich habe ein kleines Problem. Ich sollte für die Uni ein Spiel in Java schreiben und habe mich dabei für das Applet entschieden,...
  5. java

    java: Hallo, täglich kommt ein Fenster mit: - JAVA - laden sie eine wesentliche Ergänzung auf ihren PC! Installer_java_deutsch.exe (könnte ihren PC...