Arrays Hilfe (Anfänger)

Cr0wey

Grünschnabel
Moin Leute, ich habe unten eine Aufgabe gepostet, womit ich nichts anfangen kann. Kann mir hierbei jemand weiterhelfen ?
Ich bin noch ein Anfänger was Programmieren angeht und an Thema "Arrays" komme ich derzeit nicht weiter

hilfe...


Aufgabe: Arrays
Welche Laufzeitfehler (nicht Compilerfehler) koennnen sie provozieren (z.B. mit IndexÜberschreitung,
Nicht-Erzeugung der Arrays aufm Heap, Heap-Overflow durch endlose
Erzeugung von mega großen Arrays). Schreiben Sie für jeden Laufzeitfehler eine Methode, die
diesen provoziert und rufen sie in der main()-Methode auf.
Schreiben Sie zusätzlich eine Methode (public float[] impliziteErzeugung()), in der
Sie ein Array implizit erzeugen und initialisieren, sowie eine Methode (public int[]
expliziteErzeugung()), in der Sie ein Array explizit Erzeugen. Geben Sie beide Arrays auf der
Konsole aus.

so wie ich aus der aufgabe wohl entnehme, soll man Laufzeitfehler mit IndexÜberschreitung,
Nicht-Erzeugung der Arrays aufm Heap, Heap-Overflow durch endlose Erzeugung von mega großen Arrays erzeugen.

:(
 
Hi

genau.
Wo liegt das Problem?

Das ein Array eine Menge von (gleichen) Variablen ist, statt nur eine Einzelne
sollte dir bekannt sein

Ein int macht man zB. so:
Java:
int zahl;
Wenn man 1000 int´s braucht...
Java:
int zahl1;
int zahl2;
int zahl3;
...
wäre eine Möglichkeit, aber...naja.
Besser ein int-Array mit 1000 int´s:
Java:
int[] zahl;
zahl = new int[1000];
Wichtig: Bei einem Einzelint hat man mi "int zahl" schon ein Verwendungsfertiges int,
in das man eine Zahl speichern kann.
Die erste Zeile der Arraymethode hier sagt zwar, dass zahl ein Array ist,
macht aber noch überhaupt keinen Platz für irgendwelche Variablen.
Arrays müssen (so wie Klassenobjekte) erst mit new erzeugt werden,
bevor man sie Verwenden kann. Und dort gibt man dann auch die Größe an.
(beide Zeilen kann man auch in eine zusammenfassen "int[]zahl = new int[1000];")

Zu den einzelnen Arrayelementen kommt man jetzt mit zahl[nummer],
wobei die möglichen Nummern bei Größe 1000 0 bis 999 sind. 1000 selbst geht nicht!
Zum Verständnis etwas mit Arraygröße 4:
Begonnen mit der Elementezählung wird generell immer bei 0,
und 4 ist die Anzahl der Elemente, nicht die Nummer des Höchsten.
Ein new zahl[4] ergbit also 4 Stück: zahl[0] zahl[1] zahl[2] zahl[3]
Geht für 4 eben nur bis 3. Und für 1000 nur bis 999

Und der erste Teil deiner Aufgabe ist jetzt, herauszufinden was passiert,
wenn man bei Java auf falsche, nicht vorhandene Elementnummern zugreift.
zahl[1000], zahl[-123], zahl[1234] usw.
 
Hi

Ein int macht man zB. so:
Java:
int zahl;
Wenn man 1000 int´s braucht...
Java:
int zahl1;
int zahl2;
int zahl3;
...
wäre eine Möglichkeit, aber...naja.
Besser ein int-Array mit 1000 int´s:
Java:
int[] zahl;
zahl = new int[1000];

Zu den einzelnen Arrayelementen kommt man jetzt mit zahl[nummer],
wobei die möglichen Nummern bei Größe 1000 0 bis 999 sind. 1000 selbst geht nicht!
Zum Verständnis etwas mit Arraygröße 4:
Begonnen mit der Elementezählung wird generell immer bei 0,
und 4 ist die Anzahl der Elemente, nicht die Nummer des Höchsten.
Ein new zahl[4] ergbit also 4 Stück: zahl[0] zahl[1] zahl[2] zahl[3]
Geht für 4 eben nur bis 3. Und für 1000 nur bis 999

Ah danke vielmals für die Mühe :) jetzt wird mir auch schon einiges klarer. Arrays sind halt so wie ichs verstanden habe Schubladen eines Schranks, wo man bestimmte Werte verstauen kann. Warum die zahl 1000 nicht gezaehlt wird und es bei 0 anfaengt und die 0 schon als Schublade gezaehlt wird, verwirrt mich n bisel :rolleyes:
naja wie auch immer, aber die Aufgabe ist mir jetzt verstaendlicher geworden. Man kann halt nicht auf die elemente zugreifen, die man nicht festlegt in Array-Elementen. Damit wird wohl auch der "Laufzeitfehler" gemeint.
hmm ne andere Frage... da man jetzt ya ein Array erstellt hat:
Java:
int[] zahl;
zahl = new int[1000];
besteht dann zum schluss der Aufgabenstellung nur der Aufruf nach den Elementen zahl[1000], zahl[-123], zahl[1234] oder?
 
Genau (ist aber nur ein Teil der Aufgabe, nicht alles)

Einfach mal probieren, welche Fehlermeldung kommt,
wenn man eine zu hohe oder negative Zahl als Indexnummer nimmt.

Die Fehler in Java sind üblicherweise eine Meldung über irgendeine "Exception",
je nachdem welcher Fehler aufgetreten ist.

Bei dem Fall hier sollte es eine ArrayIndexOutOfBoundsException werden,
wenn du die siehst hast du es richtig (naja, absichtlich falsch) gemacht.
Dazu werden Infos zum Finden der Fehlerstelle ausgegeben,
also nicht vom restlichen Text abschrecken lassen.


Der nächste Testfall laut Angabe sollte sein, was passiert,
wenn du vor dem Zugriff auf das Array kein new machst
(und damit keine Größe angegeben hast).
Das wird wieder eine Exception, aber eine andere.
Und den Namen sollst du eben herausfinden.

Zum Rest der Aufgabe am Besten dann,wenn du das mal hast.
 
Zurück