Arrays und While-Loop

DrahtEck

Mitglied
NAbend, hier eine simpler Code, der auch wunderbar funktioniert.

Java:
 String [] fragen = {"Wie viel ist 3 + 9 : ", "Wie viel ist 3 * 5 : "};
          
      int [] antworten = {11, 15};
             
      int  i = 0;
      while (i < fragen.length){                   //fragen.lenght = 2 []    Bedingung muss true sein
      System.out.println(fragen[i]);             // [i]  = beim ersten mal  index [0] beim zweiten durchgang index[1]
      Scanner benutzerEingabe = new Scanner(System.in);
      int eingabeZahl = benutzerEingabe.nextInt();
     
      if (eingabeZahl == antworten[i]) {
         System.out.println("Korrekt: ");
         i++ ;
      }
      else {
        System.out.println("Falsch: ");
}


Frage 1. zu dieser Zeile if (eingabeZahl == antworten[i]) es geht um[i] .Warum greife ich hier auf int [] antworten = {11, zu obwohl die WhileSchleife sich auf String [] fragen = {"Wie viel ist 3 + 9 : ", "Wie viel ist 3 * 5 : "}; bezieht.

Wielleicht noch einbisschen anders was hat die Scheilfe zu tun mit int [] antworten = {11, 15}; wenn es doch heißt while (i < fragen.length) und nicht while (i < antworten.length)

Ich kann alles erklären/ nachvollziehen nur nicht das [i]hinter der Variabeln ==antworten.
Sorry für die quelnden Fragen, viele nehem das so hin aber erklären können sie es auch nicht wirklich. 😬

Ich könnte damit auch leben aber es würde mich quelen, bis ich ne Antwort habe.

Thx im Voraus.
 
Zuletzt bearbeitet:

mihe7

Top Contributor
Warum greife ich hier auf int [] antworten = {11, zu obwohl die WhileSchleife sich auf String [] fragen = {"Wie viel ist 3 + 9 : ", "Wie viel ist 3 * 5 : "}; bezieht.
Du hast zwei Arrays. In einem Array finden sich die Fragen und im anderen Array finden sich die dazugehörigen Antworten, so dass antworten[i] die Antwort auf Frage fragen[i] liefert. Das i ist hier einfach der Index, der in der while-Schleife hochgezählt wird.

Wielleicht noch einbisschen anders was hat die Scheilfe zu tun mit int [] antworten = {11, 15}; wenn es doch heißtwhile (i < fragen.length) und nicht while (i < antworten.length)
Da die Arrays gleich groß sind, spielt es keine Rolle, ob Du auf antworten.length oder fragen.length verwendest. Würdest Du antworten.length verwenden, greifst Du in der Schleife ja auch auf fragen[i] zu (Zeile 7 in Deinem Code).

Nachtrag: 3+9 ist 12...

Hier noch die beiden Arrays als Tabelle dargestellt, vielleicht wird es dann klarer:

ifragen[]antworten[]
0"Wie viel ist 3 + 9 : "12
1"Wie viel ist 3 * 5 : "15
 
Zuletzt bearbeitet:

DrahtEck

Mitglied
ifragen[]antworten[]
0"Wie viel ist 3 + 9 : "12
1"Wie viel ist 3 * 5 : "15
Ja ich verstehe dass i zu fragen gehört aber warum auch zu antworten ??
Oder woran erkenne ich im Code dass antworten da zu gehört ?
Index 0 und 1 sind klar. Erweitere ich das Index durch die Schleife ??
Ich baue doch nicht mit dem Arrays die Schleife mit hinein ?? wenn ja warum ?
Oder anders, woher weist die Schleife das die beiden Arrays zusammen gehören und bindet diese ein ??
Was wenn es noch mehr Arrays gibt ? Wie kann die Schleife das unterscheiden ?
Hat das was mit der Klasse oder Methode zu tun ?
Muss ich da noch meine Grundkentnise in Arrays oder in While- loops vertiefen? Bei den Grundlagen wird da nichts zu gesagt.
Bin für alles offen .
 
Zuletzt bearbeitet:

Blender3D

Top Contributor
Ja ich verstehe dass izu fragengehört aber warum auch zuantworten??
Hier hast du 2 Arrays die gleich groß sind. Die Einträge sind semantisch über den Index synchronisiert. So etwas nennt man auch Lookup Table.
z.B.
auf Index 0 ist die Frage "Wie viel ist 3 + 9" im Array fragen.
die dazugehörende Antwort liegt auf dem selben Index im Array antworten.
Der Grund wird vom Ersteller des Arrays geliefert indem er diese Daten entsprechend setzt.
Mit diesem Wissen wird in der Schleife dann entsprechend auf die Daten zugegriffen.
 

mihe7

Top Contributor
Ja ich verstehe dass izu fragengehört aber warum auch zuantworten??
Das i ist völlig unabhängig vom Array. Das ist wie bei Funktionen: der []-Operator erwartet einfach einen Ausdruck, der einen ganzzahligen 32-Bit Wert (ein int) liefert. Du kannst also fragen[0], fragen[i], fragen[x] oder auch etwas wie fragen[i/2] oder fragen[random.nextInt(fragen.length)] schreiben. Wichtig ist nur, dass das Ergebnis in der eckigen Klammer einen gültigen Index liefert (d. h. eine Ganzzahl zwischen 0 und der Länge des Arrays minus 1).

fragen[0]Adressiert das Element im Array an Index 0
fragen[i]Adressiert das Element im Array an Index i
fragen[x]Adressiert das Element im Array an Index x
fragen[i/2]Adressiert das Element im Array an Index i/2 (ganzzahlige Division); hier wird also zuerst i/2 berechnet und das Ergebnis dieser Division wird als Index verwendet
fragen[random.nextInt(fragen.length)]Adressiert das Element im Array an Index random.nextInt(fragen.length); hier wird also zunächst einmal die Methode random.nextInt aufgerufen. Dabei wird fragen.length als Argument übergeben. Die Methode liefert einen Ganzzahl als Ergebnis zurück und dieses Ergebnis wird dann als Index verwendet.
 

KonradN

Super-Moderator
Mitarbeiter
Ok, es sind aber Zwei unterschiedliche Arrays, woher weißt die Scheife das ?
Die Schleife oder sonst irgendwer weiss da gar nichts. Du als Programmierer gibst denn Sinn vor und solltest Du Dir die Gedanken machen ähnlich wie in den anderen Antworten vorgegeben.
Man stelle sich vor es gibt 3 oder 4 Gleiche Arrays ?? Was dann ?
Dann gibt es die halt. Die sind unabhängig voneinander. Wie kann es bei Dir zu Mittag Bratwurst geben, wo ich doch Spagetti gekocht habe und @mihe7 einen Kartoffelauflauf macht? Außerdem: @BlendereD hat doch schon Bratwürstchen - wie kannst Du da Bratwürstchen machen?
Auch hier ist ganz offensichtlich: Weil die ganzen Gerichte unabhängig voneinander sind.

Und das Du als Entwickler den Sinn vorgeben musst und das Programm davon nichts weiss, merkst Du, sobald Du einen Fehler machst. Füge z.B. eine Frage hinzu und vergiss die Antwort. Was passiert dann? (Oder mach einfach das Array mit den Antworten leer - dann hast Du so einen Fehler schneller provoziert.)

Aber weil diese zwei Arrays unabhängig voneinander sind und es sehr leicht ist, Fehler zu machen (Stell Dir mal vor, Du hast hunderte von Antworten mit Fragen), würde man in der Regel Konstrukte bauen, bei denen Frage und Antwort zusammen hängen. Aber das werden Lerninhalte sein, zu denen ihr erst Später kommen werdet, daher werde ich da nicht mehr ins Detail eingehen.

Aber was man schon jetzt machen kann: Gewisse Fehler kann man abfangen. Dazu macht man Prüfungen. Du kannst also ein Konstrukt bauen, das die kleiner Länge nimmt:

Java:
int anzahlElemente;
if (fragen.length < antworten.length) {
    anzahlElemente = fragen.length;
} else {
    anzahlElemente = antworten.length;
}

int i = 0;
while (i < anzahlElemente) {
    // ...
}

Der oben beschriebene Fehler (Den Du hoffentlich mal selbst ausprobiert hast - man lernt am meisten, in dem man mit dem Code "spielt" und Dinge ausprobiert!) wird dann jetzt nicht mehr auftreten. Die vergessene Antwort auf eine Frage führt nicht mehr zu einem Fehler, der für einen Anwender nichts bedeutet...
 

DrahtEck

Mitglied
S.... die Wand an 🙈🆘🪃 🔊 PAUSE.. Erst mal Pr🥂st und thx für euren Feedback und schönes Wochenende.
Ich komme schnellstens drauf zurück. Vielleicht schon am Wochenende 😬.

P.S Was läuft schief bei mir ??? ... .. ähhhhh??? .... immer nur bei mir so, es lässt micht nicht in Ruhe. Naja es gibt schlimmeres . ✌️
 

DrahtEck

Mitglied
Abend, ich habe mehrmals euere wertvollen Beiträge gelesen und versucht diesen zu folgen.
Mein Fazit:
Hier hast du 2 Arrays die gleich groß sind. Die Einträge sind semantisch über den Index synchronisiert. So etwas nennt man auch Lookup Table.
z.B.
auf Index 0 ist die Frage "Wie viel ist 3 + 9" im Array fragen.
die dazugehörende Antwort liegt auf dem selben Index im Array antworten.
Ja und wer hat das bestimmt ? Ich als programmierer nicht ?? .. und wenn ja wie?
Der Grund wird vom Ersteller des Arrays geliefert indem er diese Daten entsprechend setzt.
Mit diesem Wissen wird in der Schleife dann entsprechend auf die Daten zugegriffen.
Ich habe diese Daten nicht gesetzt .. .. wenn ja mit welchen Befehl

Du hast zwei Arrays. In einem Array finden sich die Fragen und im anderen Array finden sich die dazugehörigen Antworten, so dass antworten[i] die Antwort auf Frage fragen[i] liefert. Das i ist hier einfach der Index, der in der while-Schleife hochgezählt wird.
Ja ist mir klar
Da die Arrays gleich groß sind, spielt es keine Rolle, ob Du auf antworten.length oder fragen.length verwendest.
Warum??
Nachtrag: 3+9 ist 12..
Ähh ja in Mathe hatte ich schon immer ne 6+ 😅 aber in Physik dafür immer ne 2 🤗

(Stell Dir mal vor, Du hast hunderte von Antworten mit Fragen),
Jaaaaa genau das war meine Frage!

Nur Zur info. Ich bringe mir Java zur Zeit selber bei, ich hoffe ab dem 01.01. 2025 nicht mehr.
Daher viellen Dank für euren Feedback.
 

Marinek

Bekanntes Mitglied
Ja und wer hat das bestimmt ? Ich als programmierer nicht ?? .. und wenn ja wie?
Also ich kann mir nicht vorstellen, dass diese Frage kommt.

Lies doch nochmal den Beitrag #2.

Ich habe diese Daten nicht gesetzt .. .. wenn ja mit welchen Befehl
In deinem Quellcode werden zwei Arrays gebaut:

Java:
 String [] fragen = {"Wie viel ist 3 + 9 : ", "Wie viel ist 3 * 5 : "};
 int [] antworten = {11, 15};

Wer auch immer das geschrieben hat, der hat sich gedacht: Die Fragen kommen aus dem fragen Array und die Antworten kommen aus dem antworten Array.

Versuch mal herauszufinden, wie die Fragen mit den Zahlen 11 und 15 zusammenhängen. Dann versuch mal zu schauen an welcher Stelle die Fragen und die passenden Antworten stehen.

Uff.

Schwer vorzustellen, dass jemand sich ERNSTHAFT mit den Inhalten auseinersetzt. Ich sage es wie es ist.

Ähh ja in Mathe hatte ich schon immer ne 6+ 😅 aber in Physik dafür immer ne 2 🤗
6+ gibt es nicht.

Nur Zur info. Ich bringe mir Java zur Zeit selber bei, ich hoffe ab dem 01.01. 2025 nicht mehr.
Verstehe ich nicht... Verschwenden wir hier Zeit oder nicht?
 

Blender3D

Top Contributor
Ja und wer hat das bestimmt ? Ich als programmierer nicht ?? .. und wenn ja wie?
Der Ersteller des von dir gezeigten Codes hat das bestimmt.
Zum Wie:
Zuerst hat er den Zusammenhang zwischen den Fragen und Antworten hergestellt indem er jedem Index in den beiden Arrays eine Frage im Array "fragen" und die dazugehörige Antwort im Array "antwort" zugewiesen hat. Letztendlich hat er den Code entsprechend erstellt.
Ich habe diese Daten nicht gesetzt .. .. wenn ja mit welchen Befehl
Das bedeutet der Code stammt nicht von dir ...
... Der Befehl den du wahrscheinlich benutzt hast war wohl copy paste oder Abtippen.
 

M.L.

Top Contributor
Java ... ab dem 01.01. 2025 nicht mehr.
(offtopic) nur mit Java, oder generell mit Programmierung ? In der Programmierung geht es um die Frage, wie sich der Compiler ( Interpreter, Transpiler,...) verhält, wenn er im Quellcode auf ein Schlüsselwort ( auch i.V. mit anderen Schlüsselwörtern) ( nicht ) trifft. Andere Programmiersprachen haben andere Anforderungen an die formelle ( nicht: die semantische oder logische ) Korrektheit des Codes.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R While-Loop der die Einträge eines Arrays in umgekehrter Reihenfolge anzeigt Java Basics - Anfänger-Themen 3
richis-fragen Kann Arrays.stream() auch auf Objekte angewant werden? Java Basics - Anfänger-Themen 10
Fynx_HD Arrays übergeben, Mehrdimensionale Arrays Zeilenabtrennung in schleifen Java Basics - Anfänger-Themen 8
M Länge eines Arrays als Variable speichern möglich? Java Basics - Anfänger-Themen 14
R Liste und Arrays Java Basics - Anfänger-Themen 12
N mehrdimensionale arrays Java Basics - Anfänger-Themen 12
E Arrays in einer ArrayList miteinander vergleichen Java Basics - Anfänger-Themen 12
Kingdako Wie löse ich eine Mathematische Formel mit Arrays und Schleifen? Java Basics - Anfänger-Themen 32
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
S Hilfe bei Praktischen Aufgaben von Arrays Java Basics - Anfänger-Themen 39
T Objekte mit arrays erstellen Java Basics - Anfänger-Themen 6
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
J Mehrdimensionale Arrays Java Basics - Anfänger-Themen 2
pc pc pc pc pc letztes Element eines Arrays n Java Basics - Anfänger-Themen 3
M Arrays Java Basics - Anfänger-Themen 3
Ostkreuz Wert von Arrays summieren Java Basics - Anfänger-Themen 1
Ostkreuz Summieren von Arrays Java Basics - Anfänger-Themen 4
javaBoon86 Arrays 2 Dimension Werte ausgeben Java Basics - Anfänger-Themen 15
paulen1 Best Practice "Unchecked Assignment" Warnung beim erstellen eines 2D Arrays of Arraylists Java Basics - Anfänger-Themen 2
B bei 2 Arrays Anzahl gleicher Elemente vergleichen? Java Basics - Anfänger-Themen 49
JustAProgrammer Ein Dreieck mit Arrays erstellen Java Basics - Anfänger-Themen 2
TheSepp Nur Arrays ausgeben, die Werte zugewiesen haben. Java Basics - Anfänger-Themen 4
volcanos Addition -> List<Integer> mit Arrays.asList() versus List<Integer>ArrayList<>() Java Basics - Anfänger-Themen 14
ArrayList mit unbekannter Menge an Arrays die Arrays vergleichen Java Basics - Anfänger-Themen 9
D Arrays an replaceAll-Methode übergeben Java Basics - Anfänger-Themen 12
rosima26 Geordnete Arrays ausgeben Java Basics - Anfänger-Themen 31
D Inhalt eines Arrays ausgeben Java Basics - Anfänger-Themen 7
A Jedes zweite Element eines Arrays entfernen Java Basics - Anfänger-Themen 30
C Zwei Arrays addieren und ausgeben Java Basics - Anfänger-Themen 3
E Zinsrechnung mithilfe von Arrays Java Basics - Anfänger-Themen 12
LePetitChat1 Arrays - NullPointerException? Java Basics - Anfänger-Themen 14
H Arrays: Größten Zahlen Unterschied herausfinden Java Basics - Anfänger-Themen 20
H Arrays befüllen Java Basics - Anfänger-Themen 43
C60 Methoden Main-Methode erkennt meine Arrays nicht. Java Basics - Anfänger-Themen 7
D Arrays Java Basics - Anfänger-Themen 9
C Java Arrays - Ausgabe in Methode Java Basics - Anfänger-Themen 12
N Arrays Java Basics - Anfänger-Themen 5
W n verschiedene Arrays zufällig ausgeben - mit der Random-Klasse? Java Basics - Anfänger-Themen 8
U zwei 2D arrays auf gleich sein überprüfen Java Basics - Anfänger-Themen 14
melaniemueller Lagerverwaltung erstellen - mehrdimensionale Arrays Java Basics - Anfänger-Themen 62
C initialisieren eines arrays richtiger Größe und mit geeignetem Datentyp Java Basics - Anfänger-Themen 26
Bademeister007 Elemente aus zwei verschiedenen Arrays miteinander vergleichen und gegeben falls entfernen Java Basics - Anfänger-Themen 14
A Arrays aufsummieren Java Basics - Anfänger-Themen 11
C Wie 2 Arrays zusammenfügen und sortieren? Java Basics - Anfänger-Themen 11
S Arrays aneinanderketten Java Basics - Anfänger-Themen 20
Sinan Arrays auflisten ohne Wiederholung Java Basics - Anfänger-Themen 28
D Hilfe beim Erzeugen eines Arrays NullPointerException wird ausgelöst Java Basics - Anfänger-Themen 11
R Werte und Reihenfolge in 2d Arrays vergleichen Java Basics - Anfänger-Themen 5
D Verschlüsslungsaufgabe / Arrays Java Basics - Anfänger-Themen 6
L Methode für Zweidimensionale Arrays Java Basics - Anfänger-Themen 4
L Methode zum invertieren eines Arrays Java Basics - Anfänger-Themen 7
S zweidimensionale char arrays Java Basics - Anfänger-Themen 14
J Methoden Mehrdimensionale Arrays übereinander legen Java Basics - Anfänger-Themen 5
D Verwirrung bei Streams aus primitiven Arrays Java Basics - Anfänger-Themen 2
P Arrays mit verschiedenen Längen miteinander dividieren. Java Basics - Anfänger-Themen 1
P Wie kann ich die Zahlen dieses Arrays dividieren? Java Basics - Anfänger-Themen 2
N 2D Arrays jedes xy vergleichen Java Basics - Anfänger-Themen 7
J Traveling Salesman Problem [Arrays] Java Basics - Anfänger-Themen 9
M Arrays mit mehreren Werten über JOptionPane initialisieren Java Basics - Anfänger-Themen 12
Kawastori Größe eines Arrays bestimmen Java Basics - Anfänger-Themen 13
Zeppi Arrays[i] Java Basics - Anfänger-Themen 7
Lena_2611 Vergleich von Array1 Index mit Array2 Wert und erzeugen eines neues Arrays Java Basics - Anfänger-Themen 8
J B-Sprache mit Arrays ausführen Java Basics - Anfänger-Themen 18
A Teilarrays eines 2D-Arrays sortieren Java Basics - Anfänger-Themen 4
C Arrays - deklarieren, initialisieren? Ist das ein Objekt? Java Basics - Anfänger-Themen 3
K Sudoku mit 2D Arrays Java Basics - Anfänger-Themen 19
T Vertikales Histogramm mit Arrays Java Basics - Anfänger-Themen 3
JD_1998 Arrays einlesen, zwischenspeichern und wieder ausgeben Java Basics - Anfänger-Themen 8
Z Kein überprüfen des gesamten Arrays möglich.(Viergewinnt Spiel) Java Basics - Anfänger-Themen 6
F Arrays: Mathematische Funktion Java Basics - Anfänger-Themen 19
mihe7 Von Datentypen und (mehrdimensionalen) Arrays Java Basics - Anfänger-Themen 4
A Teilen eines Arrays Java Basics - Anfänger-Themen 5
DorFey Sortieren eines mehrdimensionalen Arrays Java Basics - Anfänger-Themen 8
N Probleme beim printen von Arrays durch for Schleife Java Basics - Anfänger-Themen 3
L If und else bei 2 Dimensionalen Arrays Java Basics - Anfänger-Themen 8
1 Arrays Java Basics - Anfänger-Themen 7
M Rückgabe eines Arrays Java Basics - Anfänger-Themen 10
L Addition von Arrays über die Parameterliste Java Basics - Anfänger-Themen 11
Z Erste Schritte Indexe innerhalb eines Arrays zusammensählen Java Basics - Anfänger-Themen 14
N Länge eines Arrays in einem Objekt testen Java Basics - Anfänger-Themen 51
S Übergabe von Arrays an Methoden Java Basics - Anfänger-Themen 20
D Collections Arrays in ArrayList abspeichern Java Basics - Anfänger-Themen 6
A Freie Stelle eines Arrays Java Basics - Anfänger-Themen 17
H Ein gegebenes Int Array zu Zwei Arrays zurück geben Java Basics - Anfänger-Themen 6
J 2D Arrays summieren Java Basics - Anfänger-Themen 21
J zwei String Arrays miteinander vergleichen Java Basics - Anfänger-Themen 18
A Java.util.Arrays Java Basics - Anfänger-Themen 15
T Methodenverknüpfung mit Arrays Java Basics - Anfänger-Themen 4
R Zugriff auf den Index eines Arrays, welches ein Objekt ist. Java Basics - Anfänger-Themen 4
F Eine Zahl mit Arrays vergleichen Java Basics - Anfänger-Themen 7
A 2d Arrays aus txt.file einlesen Java Basics - Anfänger-Themen 16
B Arrays Java Basics - Anfänger-Themen 4
P Arrays "automatisch" erstellen lassen Java Basics - Anfänger-Themen 12
B Nur eine bestimmte Anzahl an Arrays ausgeben Java Basics - Anfänger-Themen 9
H Gemeinsame Schnittmenge zweier Arrays ausgeben Java Basics - Anfänger-Themen 12
H Größte Duplikat (Größte Doppelte Wert) eines Arrays ausgeben Java Basics - Anfänger-Themen 9
A Summe des Arrays pd mit alternativer Schleife Java Basics - Anfänger-Themen 2
S Elemente eines Arrays bei Ausgabe auslassen Java Basics - Anfänger-Themen 2
M Verständnisproblem der Rekursion bei Arrays Java Basics - Anfänger-Themen 8
F Mehrdimensionale Arrays Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben