Erklärung static boolean

dt-schulte

Mitglied
Guten Abend,

ich benötige eine Erklärung zu einem Program. Ich verstehe nicht so recht, was es macht.
Es geht um einen Zufallsgenerator, der die Lottozahlen ziehen soll.

Die Schleife zum Ziehen der Zahlen sieht so aus:
Java:
for (i=0;i<Lotto.length; ) {
      gezogen = generator.nextInt(49)+1;
      if (!isIntInArray(gezogen,Lotto)) {
        Lotto[i] = gezogen;
        i++;
      } // end of if
    } // end of for

Das isIntInArray verweißt dann hierhin:

Java:
 static boolean isIntInArray(int pruefeZahl, int pruefArray[]) {
    boolean enthalten = false;
    for (int i=0;i<pruefArray.length ;i++ ) {
      if (pruefArray[i]==pruefeZahl) {
        enthalten=true;
      }
    } // end of if
    return enthalten;
  } // end of for

Ich habe gehofft, wenn ich den Programmcode Zeile für Zeile durchgehe, verstehe ich den Aufbau der Schleife, aber es will sich mir so überhaupt nicht erschließen :(

Ich verstehe das im oberen Teil bei der Ziehung überprüft wird, ob die soeben gezogene Zahl im Array wiederzufinden ist, wenn nicht, dann wird sie als Lotto gesetzt.

Aber wie genau läuft die untere Schleife ab? Woher z.B. weiss die Schleife wie lang das Array pruefArray ist?

Ich würd mich über eine Erklärung freuen.

Danke und gruß
 

Dompteur

Top Contributor
Aber wie genau läuft die untere Schleife ab? Woher z.B. weiss die Schleife wie lang das Array pruefArray ist?
In Java kannst du für jedes Array die Länge abfragen. Hier handelt es sich aber um die Länge, mit der das Array erzeugt wurde und nicht um den bereits belegten Teil des Arrays.
Das heißt, dass beim ersten Aufruf das Array mit lauter (integer) Nullen belegt ist. Da Lottozahlen immer größer Null sind, ist das kein Problem. Bei den späteren Aufrufen sind die ersten Stellen des Arrays mit "gültigen" gezogenen Zahlen belegt und am Ende folgen Nullen. Aus diesem Grund kann man bei diesem Problem immer das ganze Array durchsuchen.
 

strußi

Top Contributor
die untere schleife erhält die info über die länge durch das .length
-- es gibt dir an, wieviele zellen dein array hat. Dabei ist noch zu beachten wenn es z.B. 6 felder hat, dass die feldindices von 0-5 laufen, deshalb steht in der for-schleife auch i <pruefArray.length und klein <= das würde zu einer IndexOutOfBounceException führen ;-)

static boolean ist eine klassenmethode ohne objekterzeugen nutzbar ist. die methode liefert dir als ergebnis eines methodendurchlaufs ein boolean-wert (true/false) zurück

mal angenommen Lotto[] ist ein int[] sollte der variablenname klein, also "lotto" geschrieben werden.

dein erster code-block zieht dir zufallszahlen von 1-49, kann alternativ in einer while-schleife gemacht werden, aber das ist wurst.
in der 3. zeile wird mittels der methode "isIntInArray" geprüft ob die gezogene zahl noch nicht vorhanden ist. da diese methode einen rückgabewert vom typ boolean hat läuft das wie folgt.
da kommt der zweite codeblock in spiel, der dir ein boolwert auf die abfrage liefert
initalisiert wird der bool mit false, findet die methode keine übereinstimmung wird false an deine ziehungsmaschine zurückgegeben
if( !true) {...} nicht true, was dem rückgabewert false entspricht, wird der wert in das lotto[] gepackt und eine neue zahl wird gezogen.
wird aber ein true zurückgegeben weil der wert vorhanden ist, wird sofort eine neue zahl gezogen.

im zweiten codeblock kann man nach dem enthalten =true; noch eine zeile einfügen mit "break;" was zu einem abbruch bei der suche nach doppelten zahlen führt.
 
Zuletzt bearbeitet:

dt-schulte

Mitglied
Hey danke bis hier hin schonmal :)

@strußi das es die Info aus dem length bekommt, das war mir soweit klar.. aber mir ist/ war nicht klar, wo length definiert wird. Normalerweise sieht mein Codeschnippsel dann irgendwie so aus
Java:
int lotto[] = new int[6]

hier sehe ich aber überhaupt keine Bezugsgröße.

Aber, nach dem ersten beiden Erklärungen vermute ich mal, das die größe pruefArray = Lotto.length bis zum Wert i der ersten Schleife ist und dadurch die Länge gegeben ist.

Auch der Inhalt wird 1: 1 aus dem Array Lotto genommen. Stimme die beiden Annahmen?


Dann startet die Schleife bei i=0 und prüft i++ die bereits geschriebenen Werte im pruefArray. Sind die alle ungleich, dann ist gut, findet sich aber eine Überschneidung dann wird der Wert verworfen, es kommt die Meldung "false" zurück an die erste "if Schleife".
i wird dort nicht hochgezählt, es wird eine neue Zahl ermittelt, geschrieben geprüft etc.
Wenn jetzt der wert true kommt, Bedeutet die Zahl ist nicht enthalten, dann läuft die obere Schleife weiter, zählt i einen hoch bis i= <Lotto.length

Passt das soweit?
 

Dompteur

Top Contributor
"isIntInArray" ist eine Methode mit 2 Parametern (int pruefeZahl, int pruefArray[]).
Eine Methode kommt an 2 Stellen vor :
* bei der Deklaration : hier steht, was die Methode macht.
* beim Aufruf : hier wird die Methode in den Programmfluss eingebungen. Das kann im Programm an mehreren Stellen passieren.

Beim Aufruf "isIntInArray(gezogen,Lotto))" werden Variablem übergeben:
gezogen --> pruefeZahl
Lotto --> pruefArray
Diese Abbildung gilt während der ganzen Ausführung der Methode.

Da nun Lotto als Array mit 6 int-Werten definiert worden ist, kannst du dies innerhalb der Methode über den Parameter pruefArray.length ebenfalls abfragen.
 

strußi

Top Contributor
@dt-schulte IF-Schleife gibt es nicht, ist eine ANWEISUNG
Einmaliger Durchlauf, danach ist die Anweisung fertig, kann aber wiederholt in einer der Schleifen (while, for, for-each, do-while) aufgerufen werden. Falls ich eine vergessen habe, dürft ihr sie behalten. ;-)
Dann startet die Schleife bei i=0 und prüft i++ die bereits geschriebenen Werte im pruefArray. Sind die alle ungleich, dann ist gut, findet sich aber eine Überschneidung dann wird der Wert verworfen, es kommt die Meldung "false" zurück an die erste "if Schleife".
i wird dort nicht hochgezählt, es wird eine neue Zahl ermittelt, geschrieben geprüft etc.
Wenn jetzt der wert true kommt, Bedeutet die Zahl ist nicht enthalten, dann läuft die obere Schleife weiter, zählt i einen hoch bis i= <Lotto.length

hier ist dein Denkfehler. Wenn keine Übereinstimmung gefunden wird kommt false als returnvalue und deshalb das ! in der if-Anweisung
bei einer Übereinstimmung wird das true zurückgegeben, was mit !true (not true) als nicht zutreffendes Ereignis erkannt wird und deshalb zu einer neuen zufallszahl verhilft.
 

dt-schulte

Mitglied
@strußi ich werde es in Zukunft beherzigen :)

Aber, ich habe es begriffen :) Von daher sag ich ganz herzlichen Dank. Danke fürs erklären und danke für die Geduld die hier aufgebracht wird :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
JaZuDemNo Code Erklärung Java Basics - Anfänger-Themen 3
M Erklärung von Ausnahmebehandlung in Methoden Java Basics - Anfänger-Themen 13
S Erklärung BufferedReader und InputStreamReader Java Basics - Anfänger-Themen 4
S Erklärung zur Methode und array Java Basics - Anfänger-Themen 12
I Array in umgekehrter Reihenfolge - Erklärung - Java Basics - Anfänger-Themen 3
KogoroMori21 Erklärung zum Ternären Operator Java Basics - Anfänger-Themen 4
I Erklärung zum Java Code Java Basics - Anfänger-Themen 2
D Erklärung Java Basics - Anfänger-Themen 3
A Erklärung Programm zur Kreisberechnung Java Basics - Anfänger-Themen 43
S Bitweise Operatoren" >>>",">>","<<" erklärung Java Basics - Anfänger-Themen 5
D Erklärung eines Satzes Java Basics - Anfänger-Themen 0
M Erklärung: Int IndexOf (String s) Java Basics - Anfänger-Themen 3
C Methoden erklärung Java Basics - Anfänger-Themen 8
W FileReader - Bitte um Erklärung Java Basics - Anfänger-Themen 7
E Erste Schritte Gute Erklärung zu Objekten / Klassen / Methoden / Sichtbarkeiten auf Deutsch Java Basics - Anfänger-Themen 3
J Bitte um Erklärung Java Basics - Anfänger-Themen 4
C Polymorphie - Erklärung bitte Java Basics - Anfänger-Themen 5
O Über Map laufen Erklärung Java Basics - Anfänger-Themen 4
H Primzahltest : Erklärung zum Code Java Basics - Anfänger-Themen 2
M Erklärung Code Mergesort Bitte Java Basics - Anfänger-Themen 3
N While Schleife Erklärung Bitte Java Basics - Anfänger-Themen 3
B Benötige Erklärung für Lösungsansatz Java Basics - Anfänger-Themen 0
M web.xml Abschnitt Erklärung Java Basics - Anfänger-Themen 2
Z Fibonacci rekursiv meine Erklärung stimmt so? Java Basics - Anfänger-Themen 2
A erklärung von code Java Basics - Anfänger-Themen 4
A DezimalZuBinär - Erklärung der Vorgehensweise des Programms Java Basics - Anfänger-Themen 4
Z Fibonacci Array Erklärung Java Basics - Anfänger-Themen 5
K Erste Schritte Datenbank SQL erklärung Java Basics - Anfänger-Themen 15
H Methoden Bitte um Erklärung der askString-Methode Java Basics - Anfänger-Themen 15
G Erklärung .next Java Basics - Anfänger-Themen 4
D Erklärung Kalenderwoche Java Basics - Anfänger-Themen 14
T Erklärung zur Methode, Modulator Java Basics - Anfänger-Themen 3
V Objekte/Klassen erstellen - Erklärung anhand Beispiel Java Basics - Anfänger-Themen 4
P Methoden Erklärung wie ich eine spezielle Methode richtig anwende Java Basics - Anfänger-Themen 9
S Threads Erklärung ReentrantLock Java Basics - Anfänger-Themen 6
B Kleine Erklärung zu einer Codezeile benötigt Java Basics - Anfänger-Themen 5
G Bitte um Erklärung dieser einer Zeile Java Basics - Anfänger-Themen 5
R Interpretation/Erklärung main Java Basics - Anfänger-Themen 4
Helgon Polymorphie Generischer Methodenkopf - Erklärung Java Basics - Anfänger-Themen 3
W OOP Konstruktoren Erklärung Java Basics - Anfänger-Themen 14
E Quellcode Erklärung Java Basics - Anfänger-Themen 8
R Vererbung Bitte um Erklärung - Instanzvariablen Java Basics - Anfänger-Themen 8
A Java Erklärung? Java Basics - Anfänger-Themen 4
D Beans Erklärung Java Basics - Anfänger-Themen 11
Q Klausur aufgabe Erklärung Java Basics - Anfänger-Themen 12
G Bitte um Erklärung Java Basics - Anfänger-Themen 9
O Erklärung für Pattern Java Basics - Anfänger-Themen 5
K gute erklärung Java Basics - Anfänger-Themen 5
Screen Erklärung von der Umwandlung von .class in .jar o. .exe ! Java Basics - Anfänger-Themen 5
Spin Taschenrechner - Erklärung Java Basics - Anfänger-Themen 9
S Code-Erklärung Java Basics - Anfänger-Themen 4
J Bitte um Erklärung für einen Java-Ausdruck Java Basics - Anfänger-Themen 8
M enhanced for - erklärung Java Basics - Anfänger-Themen 3
K Erklärung der Syntax Java Basics - Anfänger-Themen 6
R Erklärung bitte Java Basics - Anfänger-Themen 3
G Erklärung for-Schleife bei Strings Java Basics - Anfänger-Themen 4
tobiasbeil Fehler array initialisierung. Nur erklärung bitte. Java Basics - Anfänger-Themen 2
W Programm erklärung Java Basics - Anfänger-Themen 7
F Threads - Erklärung und Beispielprogramm Java Basics - Anfänger-Themen 4
D Erklärung für eine Abfrage. Java Basics - Anfänger-Themen 9
D Eine Erklärung für eine 3D-Schleife bitte. :) Java Basics - Anfänger-Themen 4
B [suche erklärung] - sicherheit beim login Java Basics - Anfänger-Themen 3
O Welcher Object-Lock-Pool bei static Variablen? Java Basics - Anfänger-Themen 3
A Instance methods should not write to "static" fields Java Basics - Anfänger-Themen 4
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
viktor1 Methoden Methode schreiben static void readText (String filename) {...} zu WordHistogramSample.java Java Basics - Anfänger-Themen 13
M static ArrayList in non-static Java Basics - Anfänger-Themen 12
B Static vs non static und Probleme daraus Java Basics - Anfänger-Themen 13
S Methoden 2 non-static Methoden, trotzdem Fehler "non static method can not be referenced from a static context" Java Basics - Anfänger-Themen 9
R UML-Bild (Erkennung ob static o. nicht) Java Basics - Anfänger-Themen 18
R Schulaufgabe, Bruache Hilfe mit non-static Methoden Java Basics - Anfänger-Themen 2
B Static Attribute in einer Klasse, wie geht das? :O Java Basics - Anfänger-Themen 19
NaZuRe Geld(Wert) von der public static void main in die public static void Blackjack Java Basics - Anfänger-Themen 2
H Static Java Basics - Anfänger-Themen 5
K Ausgaben auf der Konsole (static Varible) Java Basics - Anfänger-Themen 9
S public static boolean Java Basics - Anfänger-Themen 4
Vamecruft Compiler-Fehler public static void zu static String ändern Java Basics - Anfänger-Themen 2
L non-static Fehler Java Basics - Anfänger-Themen 16
S Klassenmethode ohne static Java Basics - Anfänger-Themen 2
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
J Fehlermeldung unklar. non-static variable player0 cannot be referenced from a static context Java Basics - Anfänger-Themen 4
D Methoden Scannervariablen in static Methoden Java Basics - Anfänger-Themen 5
P non-static variable cannot be referenced from a static context Java Basics - Anfänger-Themen 6
V the static method should be accessed is a static way Java Basics - Anfänger-Themen 6
NormanPatrickBenner static non-static Java Basics - Anfänger-Themen 82
N Erste Schritte "non-static method" oder "XYZ can not be resolved" Java Basics - Anfänger-Themen 21
B Email versenden, muss Methode static sein? Java Basics - Anfänger-Themen 7
R static in der Methode Java Basics - Anfänger-Themen 2
E Problem mit static Methode Java Basics - Anfänger-Themen 4
H Vererbung Static Scanner Objekt verwenden - von StdIn in einer importierten Klasse lesen Java Basics - Anfänger-Themen 10
M Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 10
I Abstrakte Klasse - static Attribute deklarieren Java Basics - Anfänger-Themen 14
C Methoden Unterschied zwichen public int, public static int und public static void Java Basics - Anfänger-Themen 2
J Frage zu: public static void main (String[]args) Java Basics - Anfänger-Themen 1
T Datentypen enum static Chaos (blutiger anfänger) Java Basics - Anfänger-Themen 5
D Das leidige Thema static.... Java Basics - Anfänger-Themen 15
Aprendiendo Interpreter-Fehler "non-static variable this cannot be referenced from a static context" Java Basics - Anfänger-Themen 2
T Problem mit static Java Basics - Anfänger-Themen 6
T static String Variable wird nur beim ersten aufruf durch eine Funktion geändert. Java Basics - Anfänger-Themen 16
S Vererbung Zugriff auf Methode funktioniert nicht (static/non-static) Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben