Arrays und While-Loop

DrahtEck

Aktives 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

Aktives 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

Aktives 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

Aktives 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.
 

DrahtEck

Aktives Mitglied
Moin, der Code war eine Aufgabe na klar habe ich den nach einem ähnlichen Muster erstellet.

Muster 1
Java:
 int count = 1;
         while (count != 6) {           
          System.out.println("Zahl: " + count);   
             count ++;

Muster 2

Java:
      int zahl = 36;

      double zahl1 = 66.66;



      // Array

      // Datentyp[] Name = new Datentyp[Anzahl];

      int [] zahlenArray = new int[6];

      zahlenArray[3] = 25;

      zahlenArray[5] = 147;

      zahlenArray[0] = 32;



      double [] zahlenArray1 = new double[8];

      zahlenArray1[1] = 69.15;

      zahlenArray1[4] = 35.32;



      String [] personA = {"Andre","Schmidt","35"};


Die Aufgabe war Array mit Schleife zu erstellen und durch Eingabe über Scanner Werte wie Int,Strings und soweiter zu zuweisen .

6+ gibt es nicht.


Verstehe ich nicht... Verschwenden wir hier Zeit oder nicht?
Sollte nur ein Witz sein. Sorry .

Nein Ihr verschwendet keine Zeit.

Was war genau Deine Frage? Wie Du mehrere Fragen und Antworten erstellst? Indem Du für jedes Frage-Antwort-Paar einen Eintrag für die Frage dem Array fragen und einen Eintrag für die Antwort dem Array antworten hinzufügst.
Aus einer Antwort ergab sich wieder eine Frage, wollte nicht für Verwirrung sorgen.

Auf jeden Fall werde ich mich später noch mal damit beschäftigen.
In dem nächsten Lektionen kommen Konstruktoren dran.

Viellen Dank für eure Mühe ihr habt genug Zeit investiert. 👍
 

DrahtEck

Aktives Mitglied
Das i ist hier einfach der Index, der in der while-Schleife hochgezählt wird.

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

Ja aber ich habe als Bedingung while(i < fragen.length) , das bedeutet für mich ich greife nur auf den Index von fragen[].

Beispiel:

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

Erstelle ich meines wissens nach, ein mal Index1 und ein mal Index2

Index1​
fragen[]
Index 2​
Iantworten[]
0​
"Wie viel ist 3 + 9 : "​
0​
12​
1​
"Wie viel ist 3 * 5 : "​
1​
15​




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.

Jetzt habe ich es geschnallt
Das ist die Antwort die ich gesucht habe.
Jetzt mit der von mir erstellten Tabelle habe ich den Satz "Die Einträge sind semantisch über den Index synchronisiert" verstanden.

Danke an alle eure Mühe war nicht um Sonst
 

mihe7

Top Contributor
Ja aber ich habe als Bedingung while(i < fragen.length), das bedeutet für mich ich greife nur auf den Index von fragen[].
Nein. Der Zugriff auf die Array-Elemente taucht an der Stelle gar nicht auf. Hier wird nur die Array-Länge (fragen.length) verwendet - und da die Array-Längen gleich groß sind, spielt es da auch keine Rolle, ob Du fragen.length oder antworten.length für den Vergleich heranziehst.

Erstelle ich meines wissens nach, ein mal Index1 und ein mal Index2
Nein. Wenn Du Dir ein Array einfach mal als Liste vorstellst:
Code:
Butter
Zucker
Salz
Dann erstellst Du hier keinen Index. Aber: eine Liste ist geordnet, d. h. man kann von einem ersten, zweiten und dritten Element sprechen und damit ist eindeutig, welches Element gemeint ist. Anders formuliert: jedes Element in der Liste lässt sich eindeutig durch seine Position in der Liste bestimmen. Das zweite Element der Liste ist "Zucker". Das dritte Element ist "Salz".

Ein Index ist nun einfach eine solche Positionsangabe. Allerdings beginnt die Zählung in Java nicht bei 1, sondern bei 0. liste[0] ist also das erste Element im Array liste.

Nachtrag: vielleicht hilft Dir auch https://www.java-forum.org/thema/von-datentypen-und-mehrdimensionalen-arrays.189506/
 
Zuletzt bearbeitet:

DrahtEck

Aktives Mitglied
Das i ist hier einfach der Index, der in der while-Schleife hochgezählt wird.

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

Ja aber ich habe als Bedingung while(i < fragen.length) , das bedeutet für mich ich greife nur auf den Index von fragen[].

Beispiel:

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

Erstelle ich meines wissens nach, ein mal Index1 und ein mal Index2

Index1​
fragen[]
Index 2​
Iantworten[]
0​
"Wie viel ist 3 + 9 : "​
0​
12​
1​
"Wie viel ist 3 * 5 : "​
1​
15​
 

KonradN

Super-Moderator
Mitarbeiter
Um das, was @mihe7 gesagt hat noch einmal in anderen Worten zu sagen: Es geht nur um den Index-Wert also die Zahl.

Woher die 0 oder 1 kommt, ist dabei egal. In Deiner Tabelle hast Du die 0 sowohl in index1 als auch in index2. Du kannst Also auf einen Index 0 in beiden Arrays zugreifen. Ebenso auf den Index 1.

Und nein - bei fragen.length greifst Du auf keinerlei index von fragen zu. Du fragst lediglich die Länge dieses Arrays fragen ab. Und da kommt dann eine Zahl bei heraus. Und die wird dann für den Vergleich verwendet. Wichtig ist: Es zählt dann immer nur noch der Wert! Woher dieser dann gekommen ist, spielt keinerlei Rolle!
 

LimDul

Top Contributor
Ja aber ich habe als Bedingung while(i < fragen.length) , das bedeutet für mich ich greife nur auf den Index von fragen[].

Beispiel:

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

Erstelle ich meines wissens nach, ein mal Index1 und ein mal Index2

Index1​
fragen[]
Index 2​
Iantworten[]
0​
"Wie viel ist 3 + 9 : "​
0​
12​
1​
"Wie viel ist 3 * 5 : "​
1​
15​
Nein, du erstellst keinen Index. Es gibt keinen Index1 und index2.

Du erstellst zwei Arrays - fragen und antworten. Das ist quasi ein Schrank, wo du in jeder Schublade was speichern kannst. Wenn du auf eine Element (Schublade) des Arrays (Schrank) zugreifen willst, musst du sagen auf welche du zugreifen willst. Diesen Zugriff nennt man Zugriff über den Index - aber es gibt keine Variable oder element index. Es ist einfach eine Zahl.

Code:
while(i < fragen.length)
Das heißt nur "Solange der Wert der Variablen i kleiner als die Anzahl der Elemente im Array fragen ist mache folgendes.

Und da sowohl in fragen, als auch antworten jeweils die gleiche Zahl an Elementen drinsteckt ist das egal. Du kannst auch (in dem Beispiel) schreiben

Code:
while(i < 2)

Kommt das gleiche raus, weil ja 2 Elemente drin sind. Die Variable i ist einfach eine Zahl, sie hat technisch keinen Bezug zu den Arrays.
 

DefconDev

Bekanntes Mitglied
Vielleicht solltest du dich noch mehr mit Arrays beschäftigen bevor du zu Konstruktoren übergehst.

Wie würdest du eigentlich die Werte in deinem Array überschreiben, statt 11 und 15 , die Werte 6 und 7?

int [] antworten = {11, 15};
 

DrahtEck

Aktives Mitglied
Vielleicht solltest du dich noch mehr mit Arrays beschäftigen bevor du zu Konstruktoren übergehst.

Wie würdest du eigentlich die Werte in deinem Array überschreiben, statt 11 und 15 , die Werte 6 und 7?

int [] antworten = {11, 15};
:D Werde mir was überlegen, du bekommt eine Antwort.
P.S. Konstruktoren sind leichter zu verstehen als die Arrays 😶
Hab mir ein paar Lektionen durch den Kopf gehen lassen bis jetzt alles verstanden.😁
 

DefconDev

Bekanntes Mitglied
:D Werde mir was überlegen, du bekommt eine Antwort.
P.S. Konstruktoren sind leichter zu verstehen als die Arrays 😶
Hab mir ein paar Lektionen durch den Kopf gehen lassen bis jetzt alles verstanden.😁
Keine Ahnung was du meinst aber meine Fragen sind ziemlich schnell und in ein paar Zeilen zu beantworten.

Wie ändere ich Werte in einem bestehenden Array.
 

Jw456

Top Contributor
Für die Antwort
Wäre es vielleicht sinnvoll sich die Unterscheide von Declaration, Initialisierung und Wertzuweisung klar zumachen.

Was machst du zb hier?
int [] antworten = {11, 15};

Was machst du hier ?
int[] antworten = new int[2];


Wo sind schon Werte in dem Array? .

Wie kannst du Werte in ein Array zur Laufzeit einfügen / ändern?
 
Zuletzt bearbeitet:

DrahtEck

Aktives Mitglied
Vielleicht solltest du dich noch mehr mit Arrays beschäftigen bevor du zu Konstruktoren übergehst.

Wie würdest du eigentlich die Werte in deinem Array überschreiben, statt 11 und 15 , die Werte 6 und 7?

int [] antworten = {11, 15};
:D Werde mir was überlegen, du bekommt eine Antwort.
P.S. Konstruktoren sind leichter zu verstehen als die Arrays 😶
Hab mir ein paar Lektionen durch den Kopf gehen lassen bis jetzt alles verstanden.
 

DrahtEck

Aktives Mitglied
Vielleicht solltest du dich noch mehr mit Arrays beschäftigen bevor du zu Konstruktoren übergehst.

Wie würdest du eigentlich die Werte in deinem Array überschreiben, statt 11 und 15 , die Werte 6 und 7?

int [] antworten = {11, 15};

Keine Ahnung was du meinst aber meine Fragen sind ziemlich schnell und in ein paar Zeilen zu beantworten.

Wie ändere ich Werte in einem bestehenden Array.
Für dich sind die Fragen schnell zu beantworten für mich noch nicht, ausserdem hatte ich erst heut Zeit ernsthaft darüber nachzudenken,
und so würde ich es machen:

Java:
int [] neueAntworten = {6, 7};
      antworten = neueAntworten;

Und so funktioniert es auch (siehe hier):

Java:
import java.util.Scanner;

public class Schleife {

    public static void main(String[] args) {
        // int count = 1;
        // while (count != 6) {
        //
        // System.out.println("Zahl: " + count);
        // count ++;
        // }
        String[] fragen = { "Wie viel ist 3 + 9 : ", "Wie viel ist 3 * 5 : " };

        int[] antworten = { 12, 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: ");
            }
        }
        int[] neueAntworten = { 6, 7 };
        antworten = neueAntworten;
        
        System.out.println(antworten[0]); // zur kontrolle
        System.out.println(antworten[1]); // zur kontrolle

        System.out.println("Super gemacht, lass und daher noch mal versuchen : ");
        String[] fragen1 = { "Wie viel ist 2 * 3 :\n ", "Wie viel ist 3 + 4 :  " };

        int j = 0;
        while (j < fragen1.length) { // fragen.lenght = 2 [] Bedingung muss true sein
            System.out.println(fragen1[j]); // [i] = beim ersten mal index [0] beim zweiten durchgang index[1]
            Scanner benutzerEingabe = new Scanner(System.in);
            int eingabeZahl = benutzerEingabe.nextInt();

            if (eingabeZahl == antworten[j]) {
                System.out.println("Korrekt:  ");
                j++;
            }

            else {

                System.out.println("Falsch: ");
            }
        }
        System.out.println("Ok schluss mit diesen Array Spielchen ! ");
    }
}
 

KonradN

Super-Moderator
Mitarbeiter
Ja, damit weist du halt komplett ein neues Array zu. Das ist nur eben blöd, wenn du ein sehr großes Array hast und nur ein Wert ändern willst.

Wie greifst du denn auf ein Element des Arrays zu? Wenn du ein Element l den kannst: dann kannst du es evtl. ja auch schreiben?
 

Jw456

Top Contributor
Du weißt doch schon wie du an ein einen Wert zum prüfen kommst.
Variabe = deinArray[diePos]

Zum ändern könnte man die Zuweisung umdrehen.
 
Zuletzt bearbeitet:

DrahtEck

Aktives Mitglied
Ja, damit weist du halt komplett ein neues Array zu. Das ist nur eben blöd, wenn du ein sehr großes Array hast und nur ein Wert ändern willst.

Wie greifst du denn auf ein Element des Arrays zu? Wenn du ein Element l den kannst: dann kannst du es evtl. ja auch schreiben?


So geht das

Java:
        int[] antworten = { 12, 15, 17, 30 ,500 , 23, 100};     
              
              antworten [3] = 100;
                            
              System.out.println(antworten[3]);
 

DrahtEck

Aktives Mitglied
Die Frage wahr ihr ob es eine Definition eines Array ist oder ob das eine Inizalisiren des Arrays ist.

Deshalb auch habe ich auch beide Varianten gegeben.
Das ist intialisieren, definition ist ohne Werte.

Java:
 int a ;  // definieren
  a = 5;  // initialisieren

int [] zahlenWert = new int [7]; // definieren
        //
          //     zahlenWert [0] = 25;  // initialisieren
          //     zahlenWert [2] = 30;  // initialisieren
 

DefconDev

Bekanntes Mitglied
Ich würde ein bisschen aufpassen. Es gibt streng genommen eine Unterscheidung zwischen Deklaration und Definition, zumindest in C. Und daher würde ich in Java auch eher von Deklaration sprechen.

Aber das sind Feinheiten, die nicht wichtig sind.

Was passiert denn, wenn du folgendes machst?

int[] myArray = {1,2,3,4};

myArray[4];

?

Und welche Schreibweise ist korrekt?

int[] myArray = new int[10];
int myArray2[] = new int[10];
 

DrahtEck

Aktives Mitglied
Jo, stimmt es müsste so heißen glaube ich.

Java:
int a ;  // deklarieren
  a = 5;  //  initialisieren

Und man definiert eine Methode.

Ich würde ein bisschen aufpassen. Es gibt streng genommen eine Unterscheidung zwischen Deklaration und Definition, zumindest in C. Und daher würde ich in Java auch eher von Deklaration sprechen.

Aber das sind Feinheiten, die nicht wichtig sind.

Was passiert denn, wenn du folgendes machst?

int[] myArray = {1,2,3,4};

myArray[4];

?
Da gibt's ne Fehlermeldung weil hier myArray[4];kein Wert zugewiesen worden ist, also ist nur Deklariert.

Und welche Schreibweise ist korrekt?

int[] myArray = new int[10];
int myArray2[] = new int[10];
Beide kann man Anwenden.
 
Zuletzt bearbeitet:

mihe7

Top Contributor
Jo, stimmt es müsste so heißen glaube ich.
Bei der Deklaration geht es um die Einführung eines neuen Bezeichners (z. B. für eine Variable, eine Methode, Klasse oder anderen Typ). Zusammen mit der Initialisierung bzw. Implementierung hat man dann eine vollständige Definition.

Beispiel:
Java:
class A {
    int x; // deklariert und definiert die Instanzvariable x

    public void hello() {  // deklariert und definiert die Methode hello
        int y; // deklariert die lokale Variable y
    }
}

Begründung:
  • Variable x wird nicht nur deklariert, sondern auch definiert, weil Instanzvariablen immer (d. h. ggf. automatisch) initialisiert werden. Persönlich bevorzuge ich es, bei Variablen nur von Deklaration zu sprechen.
  • Die Methode hello wird an dieser Stelle eingeführt (-> Deklaration) und implementiert (-> Definition)
  • Variable y ist eine lokale Variable. Lokale Variablen werden nicht initialisiert, so dass hier tatsächlich nur eine Deklaration erfolgt.
Werden Methoden in Java bei Ihrer Definition immer auch deklariert? Nein.

Beispiel:
Java:
interface A {
    void print(); // deklariert Methode print
}

class B implements A {
    public void print() { // definiert die Methode print
        System.out.println("Hello!");
    }
}
Abstrakte und native Methoden werden zunächst nur deklariert und an anderer Stelle durch ihre Implementierung definiert.
 

DefconDev

Bekanntes Mitglied
Da gibt's ne Fehlermeldung weil...
Ja, interessanter ist es aber mal zu sehen welche Fehlermeldung erscheint. Denn die wirst du in deinem Leben nicht das letzte Mal gesehen haben, gerade als Anfänger.

Das ist auch hilfreich wenn du mal einen Stacktrace an Fehlern durchliest und auf diesen stößt, dann weißt du, dass du mit 99,9% Wahrscheinlichkeit den Fehler eingebaut hast und nicht ein darunter liegendes Framework oder ähnliches.
 

DrahtEck

Aktives Mitglied
Ja, interessanter ist es aber mal zu sehen welche Fehlermeldung erscheint. Denn die wirst du in deinem Leben nicht das letzte Mal gesehen haben, gerade als Anfänger.

Das ist auch hilfreich wenn du mal einen Stacktrace an Fehlern durchliest und auf diesen stößt, dann weißt du, dass du mit 99,9% Wahrscheinlichkeit den Fehler eingebaut hast und nicht ein darunter liegendes Framework oder ähnliches.
Ja, leider hatte ich noch nie einen richtigen Stacktrace an Fehlern gehabt, nur Theoretisch erklärt wie man diese liest und versteht usw. alles andere waren nur Ein bis Zweizeihler.


In diesem Fall war das nur Syntax, error Syntax error, insert "AssignmentOperator Expression" to complete Expression .
Also nur einen Zuweisungsoperator hinzufügen und den Rest vervollständigen.
 

mihe7

Top Contributor
Ja, leider hatte ich noch nie einen richtigen Stacktrace an Fehlern gehabt, nur Theoretisch erklärt wie man diese liest und versteht usw. alles andere waren nur Ein bis Zweizeihler.

Na, das ist jetzt nicht schwer:
Java:
public class Test {
    static void properMethod() {
        try {
            faultyMethod();
        } catch (RuntimeException ex) {
            throw new RuntimeException("Got a runtime exception while calling faultyMethod", ex); 
        }
    }
    static void faultyMethod() {
        int[] arr = {1,2,3,4};
        System.out.println(arr[4]);
    }
    public static void main(String[] args) {
        properMethod();
    }
}

führt dann z. B. zu
Code:
Exception in thread "main" java.lang.RuntimeException: Got a runtime exception while calling faultyMethod
        at Test.properMethod(Test.java:6)
        at Test.main(Test.java:14)
Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 4 out of bounds for length 4
        at Test.faultyMethod(Test.java:11)
        at Test.properMethod(Test.java:4)
        ... 1 more
Daran kannst Du Deine angelesenen Theorien einmal überprüfen.
 

DrahtEck

Aktives Mitglied
Jo cool Danke

Code:
Exception in thread "main" java.lang.RuntimeException: Got a runtime exception while calling faultyMethod
        at Test.properMethod(Test.java:6)
        at Test.main(Test.java:14)
Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 4 out of bounds for length 4
        at Test.faultyMethod(Test.java:11)
        at Test.properMethod(Test.java:4)
        ... 1 more
Daran kannst Du Deine angelesenen Theorien einmal überprüfen.
Hier wird zuerst auf den Fehler hingewiesen Exception in thread "main" java.lang.RuntimeException: Got a runtime exception while calling faultyMethod.
In Zeile 14 wird die Methode properMethod();aufgerufen und in Zeile 6 Abgefangen durch catch.
Der Fehler wurde verursacht durch : : java.lang.ArrayIndexOutOfBoundsException: Index 4 out of bounds for length 4
Der ArrayIndex [4] ist außerhalb der Grenze
Von unter nach oben :
Beim Aufruf der faultyMethod(); Methode in Zeile 4 ist ein Fehler in Zeile 11 fesgestelt worden.

Lösung :
Java:
public class Test {
    static void properMethod() {
        try {
            faultyMethod();
        } catch (RuntimeException ex) {
            throw new RuntimeException("Got a runtime exception while calling faultyMethod", ex);
        }
    }
    static void faultyMethod() {
        int[] arr = {1,2,3,4};
        System.out.println(arr[3]);
    }
    public static void main(String[] args) {
        properMethod();
    }
}

Ich hoffe ich konnte das so in Worte fassen das man mir folgen kann.
 
Ä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 39
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 5
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


Oben