Brauche Hilfe um ein Programm zu verstehe

Terracotta

Neues Mitglied
Hallo mein kleiner Bruder hat im Moment Probleme in Informatik und ich versuche deshalb ein bisschen mit ihm zu lernen

Hier ist ein Programm aus seinen Unterricht dass ich versuche zu verstehen:
Java:
import java.io.*;

public class LOTTO {

    public static void main(String[] args) throws NumberFormatException, IOException {
      
    long ziehungen = 0;
    long zaehler = 0;
    int tipp = 0;
    int [] tippreihe;
    boolean [] ziehung;
    boolean hurra = false;
    int ok = 1;
  
    BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
  
    tippreihe = new int[7];
    ziehung = new boolean[50];
  
  
    //Eingabe
    for(int i = 1;i <=6; i++)
    {
        System.out.println(i + ". Zahl :");                     // fragt nach 6 Zahlen ...
        tippreihe[i] = Short.parseShort(input.readLine());       
  // ... die das Array tippreihe ergeben
   
   
   
    }
    do
    {
            for(int i = 1;i <= 49; i++)     
  // macht zunächst das alle Felder 1-50 als falsch gewertet werden
                    {
                        ziehung[i] = false;
                    }
            while (ok <= 6)    // while ok <= das heißt die Schleife hört auf nach 6 richtigen
            {
                tipp = (int) (1+Math.floor(Math.random()* 49));   
 // fängt mit der ersten Zahl an und hat eine 1 zu 50
            }                                                    // wahrscheinlichkeit diese zu Treffen da Math.random()*49
                if (ziehung[tipp] != true)                         // falls die Ziehung nicht true(!=) war also in diesem Falle richtig da alle Ziehungen auf false gesetzt wurden
                {
                ok++;                                            // ok++ heißt es geht zur nächsten Ziehung
                ziehung[tipp] = true;                            // 
                }                   
                        ok=1;                                    //
                        zaehler = 0;                           
        for (int i = 1;i <= 6; i++)
        {
        if (ziehung[tippreihe[i]] == true)                        // falls eine Zahl richtig ist wird der Zähler um 1 erhöht
        zaehler++;                                                // kontrolliert 6 mal ob die Ziehungen richtigen waren und fügt dem zaehler +1 hinzu
        }
        if (zaehler == 6)                                        // bei 6 richtigen wird hurra zu true
        hurra = true;
       
       
        ziehungen++;                                            // Anzahl Ziehungen   
        }
        while (hurra == false);                                    // wiederholt solange bis Hurra = richtig ist
    //System.out.println(hurra)
    System.out.print("Ziehungen :"+ziehungen);
    }   
    }

Die Kommentare sind von mir erstellt um mir das Programm ein bisschen zu erläutern aber bei manchen Sachen blicke ich leider nicht durch. Vor allen Dingen bei Ziehung mit den 50 Zahlen verstehe ich nur Bahnhof.

Wollte fragen ob ich das Programm bisher so richtig verstanden habe und ob mir jemand die Ziehung mit den 50 Zahlen ein bisschen genauer erläutern kann.
 
Zuletzt bearbeitet von einem Moderator:

FourOhFour

Aktives Mitglied
Das ist aber lieb, dass du das für deinen Bruder machst ;)
Aber dein Bruder kann doch auch einfach hier Fragen stellen, was er nicht versteht.
Ansonsten den Code in Code-Tags packen... sonst wird kaum jemand drüberlesen.
Mfg.
 

Terracotta

Neues Mitglied
Java:
import java.io.*;

public class LOTTO {

    public static void main(String[] args) throws NumberFormatException, IOException {
      
    long ziehungen = 0;
    long zaehler = 0;
    int tipp = 0;
    int [] tippreihe;
    boolean [] ziehung;
    boolean hurra = false;
    int ok = 1;
  
    BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
  
    tippreihe = new int[7];
    ziehung = new boolean[50];
  
  
    //Eingabe
    for(int i = 1;i <=6; i++)
    {
        System.out.println(i + ". Zahl :");                     // fragt nach 6 Zahlen ...
        tippreihe[i] = Short.parseShort(input.readLine());         // ... die das Array tippreihe ergeben
  
  
  
    }
    do
    {
            for(int i = 1;i <= 49; i++)                           // macht zunächst das alle Felder 1-50 als falsch gewertet werden
                    {
                        ziehung[i] = false;                        // boolean 1-50 = false
                    }
            while (ok <= 6)                                        // while ok <= das heißt die Schleife hört auf nach 6 richtigen
            {
                tipp = (int) (1+Math.floor(Math.random()* 49));    // setzt Tipp auf eine Zahl von 1-49
            }                                                  
                if (ziehung[tipp] != true)                         //setzt 6 Felder als richtig an
                {
                ok++;                                            // ok++ heißt es geht zur nächsten Ziehung
                ziehung[tipp] = true;                            // setzt 6 Felder als richtig an
                }                  
                        ok=1;      
                      
                      
                      
                        zaehler = 0;                      
        for (int i = 1;i <= 6; i++)
        {
        if (ziehung[tippreihe[i]] == true)                        // falls eine Zahl richtig ist wird der Zähler um 1 erhöht
        zaehler++;                                                // kontrolliert 6 mal ob die Ziehungen richtigen waren und fügt dem zaehler +1 hinzu
        }
        if (zaehler == 6)                                        // bei 6 richtigen wird hurra zu true
        hurra = true;
      
      
        ziehungen++;                                            // Anzahl Ziehungen  
        }
        while (hurra == false);                                    // wiederholt solange bis Hurra = richtig ist
    //System.out.println(hurra)
    System.out.print("Ziehungen :"+ziehungen);
    }  
    }

Ich hoffe jetzt ist es lesbarer
 

Javinner

Top Contributor
Java:
package magicarenaoftheplaneswalker;

import java.util.Arrays;

public class LottoTest
{

    public static void main(String[] args)
    {
        /**
         * Grundsaetzlich nur eine Moeglichkeit von vielen, keine ist falsch,
         * ich wuerde hier ein anderen Weg gehen, soll jetzt jedoch keine Rolle
         * spielen.
         *
         * Ein Boolean liefert nur Wahr oder Falsch, An oder Aus.. Arrays fangen
         * bei Null an, so dass die Erste Zahl im Array den Index "0" hat. Als
         * Beispiel Nr.: Drei, so muss die vierte Stelle im {@code superZahl}
         * als "true" gekennzeichnet werden.
         */
        boolean[] superZahl = new boolean[10];
        System.out.println(Arrays.toString(superZahl));
        int zahl = 3;
        superZahl[3] = true;
        System.out.println(Arrays.toString(superZahl));
        /**
         * Nun willst du sicherlich den Wert, also {@code zahl} wieder auslesen,
         * um diesen Wert an richtigen Stelle wieder einzusetzen. So kannst du
         * hier so vorgehen:
         */

        String infoTextSuperZahl = "";
        for (int i = 0; i < superZahl.length; i++) {
            if (superZahl[i] == true) {
                infoTextSuperZahl = Integer.toString(i);
                //Im Fall der Uebereinstimmung wird die Schleife an dieser Stelle
                //wieder verlassen
                break;
            }
        }
        //Natuerlich kann auch ein Integer-Wert ausgelesen werden,
        //dabei kann einer int-Variable der Wert der Stelle als Integer zugewiesen werden

        System.out.println(infoTextSuperZahl);
        /**
         * Nun musst du das Prinzip nur noch auf das sechsAusNeunUndVierzig uebertragen
         */

    }

}
/** Konsolenausgabe */
[false, false, false, false, false, false, false, false, false, false]
[false, false, false, true, false, false, false, false, false, false]
3
 

Soloeco

Aktives Mitglied
Moin! Ich habe mir den Code kurz angesehen und meines Erachtens wird dieser nicht funktionieren, wie sich später in einem kleinen Test auch zeigte.
Die Grundidee dieses Codes ist denke ich mal folgende:
- Konsole starten, Nutzer kann Zahlen eingeben als jeweiliger Tipp
- Getippte Zahlen des Nutzers werden in einem Array zwischengespeichert
- Programm wählt Zufallszahlen aus und werden in einem boolschen Array gespeichert, indem alle Felder auf "false" sind und nur die Felder für die jeweilige Zahl auf "true" geändert wird. (z.B. Zufallszahl = 16, ... array[15] = false, array[16] = true, array[17] = false ...)
- Überprüfung ob getippte Zahlen im boolschen Array einen "true" Wert besitzen, falls dies zutrifft wird der zaehler um 1 erhöht
- Falls der zaehler 6 erreicht, hat der Nutzer gewonnen

Diese Idee an sich ist richtig, jedoch wurde sie falsch umgesetzt und zwar grundlegend.
Bei meinem Test (siehe Bild im Anhang) zeigte sich, dass zwar Zahlen eingegeben werden können, jedoch eine unendlich-Schleife produziert wurde, wodurch kein Ergebnis ausgegeben wird.
Dies liegt, meines Erachtens nach, vor allem an folgendem:
Java:
for(int i = 1;i <= 49; i++)                           // macht zunächst das alle Felder 1-50 als falsch gewertet werden
                    {
                        ziehung[i] = false;                        // boolean 1-50 = false
                    }
Hierbei werden alle(!) Felder im boolschen Array auf "false" gesetzt und zwar immer und immer wieder. Heißt letztendlich im Groben und Ganzen:
- Zufallszahl wird gezogen
- Feld im boolschen Array wird auf true gesetzt
- Feld im boolschen Array wird wieder auf false gesetzt
=> Programm läuft unendlich oft durch, da immer wieder 0 Zahlen im Array als "true" markiert sind und nicht wie es sein sollte sechs
Der aufgezeigte Code sollte also nur einmalig stattfinden und nicht immer wieder in der Schleife aufgerufen werden.

Freundliche Grüße!
 

Anhänge

  • java forum.PNG
    java forum.PNG
    1,8 KB · Aufrufe: 34
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Brauche Hilfe um ein Programm zu schreiben Java Basics - Anfänger-Themen 8
Y Brauche Hilfe beim Programm Java Basics - Anfänger-Themen 83
G Brauche eure Hilfe bei meinem Programm Java Basics - Anfänger-Themen 4
S Muss Programm schreiben -BRAUCHE HILFE Java Basics - Anfänger-Themen 15
M Brauche ein bisschen Hilfe bei einem Programm Java Basics - Anfänger-Themen 10
B Brauche Hilfe bei nem ganz einfachen Programm... Java Basics - Anfänger-Themen 4
B Brauche Hilfe zu einem Code Java Basics - Anfänger-Themen 5
J Brauche Hilfe bei for-each Aufgabe Java Basics - Anfänger-Themen 1
HeiTim Brauche Hilfe soll ein nummeriertes Feld ausgeben lassen Java Basics - Anfänger-Themen 17
J Brauche Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
H Brauche Hilfe Java Basics - Anfänger-Themen 2
H Brauche hilfe Java Basics - Anfänger-Themen 3
C Brauche Hilfe beim Schreiben eines Programmes :/ Java Basics - Anfänger-Themen 1
Leo0909 Ich brauche Hilfe bei dieser Aufgabe Java Basics - Anfänger-Themen 2
H Brauche Hilfe in Java Eclipse Programmieraufgabe Neuling Java Basics - Anfänger-Themen 3
D Brauche Dringend Hilfe...Prozedur/Funktionsprozedur Ergebnis augeben Java Basics - Anfänger-Themen 11
I Brauche Hilfe bei Objektorientiertem programmieren Java Basics - Anfänger-Themen 23
M Brauche Hilfe bei If-Scheifen Java Basics - Anfänger-Themen 2
F ich brauche Hilfe bei Listen Java Basics - Anfänger-Themen 13
J Ich brauche Hilfe bei einem Code (Variablen speichern) Java Basics - Anfänger-Themen 29
E Ich Brauche Hilfe Java Basics - Anfänger-Themen 3
L Brauche Hilfe beim arbeiten mit Konstruktoren Java Basics - Anfänger-Themen 20
J Brauche Hilfe bei einer aufgabe Java Basics - Anfänger-Themen 1
S Brauche hilfe in Java [Fehler in mein Code]? Java Basics - Anfänger-Themen 2
B BITTE!! Ich brauche dringende Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 17
TpKey10 Ich brauche Hilfe Java Basics - Anfänger-Themen 14
F Ich brauche Hilfe bei Objektorientierter Programmierung... Java Basics - Anfänger-Themen 19
L Input/Output Wurzelzeichen in der Konsole ausgeben | Brauche Hilfe Java Basics - Anfänger-Themen 6
J Brauche Hilfe bei dieser Aufgabe Java Basics - Anfänger-Themen 3
C Ich brauche hilfe für meine Klausur Java Basics - Anfänger-Themen 13
J Brauche Hilfe !! Java Basics - Anfänger-Themen 8
R Spielfeldbegrenzung einfügen (Java)? Brauche Hilfe! Java Basics - Anfänger-Themen 15
C Brauche dringend Hilfe. Umfrage mit ja und nein in Java erstellen? Java Basics - Anfänger-Themen 12
U Brauche Hilfe bei Programmierung einer Produktdatenbank App Java Basics - Anfänger-Themen 4
P Brauche Hilfe bei ResultSet mit MySQL Java Basics - Anfänger-Themen 6
T Datentypen Brauche Hilfe bei Arrays Java Basics - Anfänger-Themen 3
U Brauche Hilfe bei Bisektionsverfahren Java Basics - Anfänger-Themen 23
E Erste Schritte brauche hilfe zum verstehen einer Klasse(Tiefensuche) Java Basics - Anfänger-Themen 17
I Brauche Hilfe bei Schleifen Java Basics - Anfänger-Themen 18
B Java Graphen zeichnen - Brauche Hilfe Java Basics - Anfänger-Themen 9
S brauche hilfe bei Fehlersuche Java Basics - Anfänger-Themen 7
M JDK installieren Brauche dringend Hilfe Java Basics - Anfänger-Themen 2
L Brauche Hilfe bei Preisberechnungspogramm Java Basics - Anfänger-Themen 1
D Hilbert und Peano Kurve, ich brauche Hilfe Java Basics - Anfänger-Themen 4
S Brauche hilfe bei Pong (JFrame) Java Basics - Anfänger-Themen 2
V Hilfe-brauche eine Idee! Java Basics - Anfänger-Themen 5
R Brauche Hilfe beim fertigstellen eines Chat programms Java Basics - Anfänger-Themen 8
A Erste Schritte Brauche Hilfe Java Basics - Anfänger-Themen 2
D Brauche Hilfe für mein übungsprogramm Java Basics - Anfänger-Themen 16
S Klassen Brauche Hilfe bei Erstellung einer Klasse für einen Tachenrechner!!! Java Basics - Anfänger-Themen 6
W Brauche hilfe bei Hausübung Java Basics - Anfänger-Themen 10
D Brauche Hilfe bei Modulo (Übungsaufgabe) Java Basics - Anfänger-Themen 14
X Brauche Hilfe bei printOnScreen Methode !!! Java Basics - Anfänger-Themen 2
H mysql brauche hilfe, wer kann eine (längere) aufgabe für mich erledigen Java Basics - Anfänger-Themen 2
K Erste Schritte Brauche Hilfe bei Starten des Programms Java Basics - Anfänger-Themen 11
B Erste Schritte HILFE Brauche ein Beispiel für korrekte Syntax mit Semantikfehlern Java Basics - Anfänger-Themen 6
H Java von Kopf bis Fuß: Brauche Hilfe Java Basics - Anfänger-Themen 6
B Erste Schritte Brauche Hilfe bei einem Java-Taschenrechner Java Basics - Anfänger-Themen 11
S brauche hilfe beim fehler finden Java Basics - Anfänger-Themen 2
S Erste Schritte BlueJ-Aufgabe: Programmcode / Brauche dringend Hilfe !!! Java Basics - Anfänger-Themen 37
A Brauche Hilfe bei Division von Feldzahl durch Ganzzahl Java Basics - Anfänger-Themen 3
F Java-Anfänger, brauche Hilfe Java Basics - Anfänger-Themen 3
F Java-Anfänger, brauche Hilfe Java Basics - Anfänger-Themen 2
C Brauche dringend hilfe beim exception im code Java Basics - Anfänger-Themen 5
G Brauche bitte Hilfe, bei umgekehrter Ausgabe!! Java Basics - Anfänger-Themen 6
B Erste Schritte Brauche Hilfe für ein UML Diagramm Java Basics - Anfänger-Themen 7
S ICh brauche Hilfe,weil Java in der Schule Java Basics - Anfänger-Themen 11
B Brauche Hilfe mit Aufgaben mit dem JavaEditor Java Basics - Anfänger-Themen 8
I Primzahlenberechnung [Brauche Hilfe] Java Basics - Anfänger-Themen 5
T brauche HILFE beim Junit test:eek: Java Basics - Anfänger-Themen 11
F Reader - brauche Hilfe Java Basics - Anfänger-Themen 19
T Brauche Hilfe bei Variabeln Java Basics - Anfänger-Themen 4
J Brauche Hilfe mit replaceFirst Java Basics - Anfänger-Themen 10
M Brauche Hilfe bei Struktogramm Java Basics - Anfänger-Themen 9
T Datentypen brauche dringende hilfe!dezi in Asci umwandeln! Java Basics - Anfänger-Themen 4
X DB4O Collections and Arrays, brauche dringend Hilfe! Java Basics - Anfänger-Themen 3
B brauche hilfe bei funktion erstellen Java Basics - Anfänger-Themen 8
S Brauche Hilfe bei if/else Java Basics - Anfänger-Themen 3
N Brauche Hilfe mit Kollisionserkennung! Java Basics - Anfänger-Themen 16
J Brauche Hilfe bei Methode Java Basics - Anfänger-Themen 9
G 2 dim. Strsing Arrays brauche Hilfe Java Basics - Anfänger-Themen 20
A Brauche hilfe String untertrennen Java Basics - Anfänger-Themen 12
L Brauche bitte dringend Hilfe für Klausur Java Basics - Anfänger-Themen 8
H Brauche bei einen bsp hilfe! Java Basics - Anfänger-Themen 2
D Währungsrechner brauche Hilfe Java Basics - Anfänger-Themen 10
R Vokabeltrainer / Brauche Hilfe Java Basics - Anfänger-Themen 8
L Brauche Hilfe! Java Basics - Anfänger-Themen 8
S WAV-DATEIEN INTERPRETIEREN UND UMWANDELN Brauche Hilfe Java Basics - Anfänger-Themen 3
A Brauche Hilfe mit einer Forschleife Java Basics - Anfänger-Themen 20
N brauche Hilfe Stringverarbeitung Java Basics - Anfänger-Themen 9
JeromeM90 (Brauche Hilfe) Binär- in Dezimalzahlkonverter Java Basics - Anfänger-Themen 8
M Brauche Hilfe bei Javaapplication für JuFo Java Basics - Anfänger-Themen 21
M Brauche Hilfe beim Verstehen vom Quellcode Java Basics - Anfänger-Themen 4
A brauche hilfe ( gpanel und n-ecke) Java Basics - Anfänger-Themen 11
V Brauche Hilfe beim Programmieren Java Basics - Anfänger-Themen 3
V Brauche Hilfe beim Programmieren Java Basics - Anfänger-Themen 9
S Brauche Hilfe mit waitFor() Java Basics - Anfänger-Themen 4
N Brauche dringende Hilfe Java Aplett läuft nicht! Java Basics - Anfänger-Themen 3
D Brauche Hilfe: Funktion zum Kombinieren von Werten Java Basics - Anfänger-Themen 5
T Brauche Hilfe: Access DB + Hashmap Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben