Arrayfehler?

Status
Nicht offen für weitere Antworten.

Majin_Clodan

Mitglied
Hi Leute!
Also nun habe ich bei einem Array ein Problem. Dazu habe ich das folgende Bild erstellt:

show.php


Da bei mir nicht das Bild angezeigt wird, hier der Link zu dem Bild:

http://www.bilder-space.de/show.php?file=DUflXlEa8wGX8Gp.png

Das Besondere hierbei ist, dass die Umwandlung meines Programmes in eine Klasse fehlerfrei verlaufen ist, doch immer, wenn ich versuche, dieses Programm zu starten, entsteht diese Fehlermeldung. Ich kann angeben, wie viele Zahlen es maximal werden sollen. Dann kann ich noch angeben, wie der Wert des Arrays an der a-ten Stelle ist. Sobald ich aber dies machte, kommt diese seltsame Fehlermeldung. O.O Oder brauche ich für Arrays eine andere Methode??
Falls es noch zur Lösung hilft, hier meine Aufgabe: Schreiben sie ein Java-Programm, welches eine Folge von n ganzen Zahlen einliest und die größte Zahl dieser Folge bestimmt. Die Anzahl n ist dabei als erstes einzulesen.

Wie man nun die größte Zahl herausbekommt, habe ich mir noch keine Gedanken gemacht, da es erstmal wichtig ist, dass das Array überhaupt Werte bekommt. Zu diesem letzteren Teil der Aufgabe aber, sofern es möglich ist, noch nichts sagen, weil ich solche Sachen trainieren will. :)


Wiedermal Vielen Danke für jeden, der mir hilft. :)


MFG Majin_Clodan
 
S

SlaterB

Gast
du erstellst ein Array der Länge 6, welches also die Indexe 0, 1, 2, 3, 4, 5 erlaubt
und greifst dann auf den verbotenten Index array[6] zu,

ein ganz normaler Fehler der auch zu einer entsprechenden Exception führt,
was baust du da für abstruse Geschichten drumherum?
 

0x7F800000

Top Contributor
warum kommt es bei dieser art von aufgaben immer wieder zu solchen trivialen denkfehlern? hab schon mehrmals mitbekommen, dass genau bei dieser aufgabe immer alle anfangen mit irgendwelchen collections oder arrays oder listen (je nach sprache) rumzuballern, obwohl es nirgendwo verlangt wird. ;)

Wo stand denn in der Aufgabestellung irgendetwas von einem Array? du musst immer nur das maximum im Speicher behalten, das ist eine einzige Zahl, da brauchst du keine arrays für^^ => keep it simple & stupid... :toll:
 

Majin_Clodan

Mitglied
Aber wo steht, dass ich auf ein verbotenes Array zugreife? welche Anweisung sorgt dafür?? Ich sehe keine. o_O

Stimmt, jetzt wo du es sagst kann man es auch ohne Arrays machen. Erstmal im Kopf kam mir eine Idee, ob es aber klappt wird sich dann noch zeigen. xD
Trotzdem würde ich gerne das mit dem Array wissen, weil irgendwann werde ich es brauchen.


MFG Majin_Clodan
 
S

SlaterB

Gast
> Aber wo steht, dass ich auf ein verbotenes Array zugreife? welche Anweisung sorgt dafür?? Ich sehe keine. o_O


die Fehlermeldung sagt dir doch genau, dass es Zeile 18 ist?!

und was steht da:
array[a] = irgendwas;

a ist zu diesem Zeitpunkt 6

wie kannst du nun behaupten dass du nix von einem Arrayzugriff weißt? ;)
 

Verjigorm

Top Contributor
ArrayIndexOutOfBoundsException 6
---> du greifst auf array[6]
und vorher gibst du die maimale Anzahl mit 6 an, wie SlaterB schon schrieb, bedeutet 6 -> 0,1,2,3,4,5

irgendwie in deinem Code ist das nunmal so
 

0x7F800000

Top Contributor
um genau zu sein, hast du sogar 2 mal einen fehler gemacht, der index ist nicht bis auf +-1 falsch, sondern noch schlimmer: Bei einem array mit 5 elementen greifst du auf das siebte mit aray[6] zu, das ist doppelt falsch.

Benenne deine variablen sinnvoller um. Die for-schleife sollte eher
Code:
a=irgendwasEinlesen();
for( ; a>0 ; ){
	array[--a]=xyz;
}
so aussehen, wenn man unbedingt alles hack-mäßig hinschreiben will

übersichtshalber sollte man aber eine temporäre variable opfern, tut keinem weh:
Code:
for(int i=0; i<a; i++){
   array[i]=...
}
so siehts doch auch besser aus :toll:

und schreib die englischen begriffe nächstes mal richtig hin.
und poste hier keine bildchen, wenn's nicht nötig ist, das ist ziemlich nervig, ich musste mich fast 15 sekunden lang mit dem dämlichen bekifften-einstein-iq-werbebanner rumschlagen bis ich das mikroskopische kreuzchen unten links gefunden hab :noe:

dafür gibts ganz tolle code-tags ;)
 
S

SlaterB

Gast
> Bei einem array mit 5 elementen greifst du auf das siebte mit aray[6] zu, das ist doppelt falsch.


das Array hat die Länge 6, erst wird a erhöht, dann das Array angelegt ;)
 

0x7F800000

Top Contributor
trotzdem doppelt falsch, nur jetzt auch noch speicherplatzverschwenderisch :p Ja, hab da jetzt auch nicht so genau draufgeguggt^^ :roll:
 
Status
Nicht offen für weitere Antworten.

Oben