Java Array Fehler
lima-city → Forum → Programmiersprachen → Java
anzahl
array
code
compiler
definieren
double
eindimensionalen array
feld
folgender code
glauben
gut merken
http
jemand
mehrdimensionalen array
null
stellen
string
umgewandelt code
url
zukunft
-
Guten Abend,
ich versuche gerade ein Bukkit Plugin zu schreiben. Bloß leider hänge ich schon etwas länger an einem Fehler der sich mir einfach nicht offenbaren will. Alles was ich weiß ist, dass etwas mit dem Array in Zeile 43 nicht stimmt. Ich schätze mal ich habe einen Fahler beim Mehrdimensionalen Array gemacht, aber ich finde ihn einfach nicht. Weiß vielleicht jemand von euch mehr?
Fehlermeldung:
java.lang.ArrayIndexOutOfBoundsException: 0
public double[][] getCoordinates(){ double[][] coordinate = {}; if( this.config.isSet("world.location.x") && this.config.isSet("world.location.z") && this.config.isSet("world.location.y") && this.getWorld() != null){ if( this.config.isString("world.location.x") && this.config.isString("world.location.z") && this.config.isString("world.location.y") ){ String[] x = {}; String[] y = {}; String[] z = {}; if(this.config.getString("world.location.x").indexOf(",") > -1){ x = this.config.getString("world.location.x").split(","); y = this.config.getString("world.location.y").split(","); z = this.config.getString("world.location.z").split(","); }else{ x[0] = this.config.getString("world.location.x"); y[0] = this.config.getString("world.location.y"); z[0] = this.config.getString("world.location.z"); } for(int i = 0;i < x.length;i++){ coordinate[0][i] = Double.parseDouble(x[i].replaceAll(" ", "")); coordinate[1][i] = Double.parseDouble(y[i].replaceAll(" ", "")); coordinate[2][i] = Double.parseDouble(z[i].replaceAll(" ", "")); } }else if( this.config.isDouble("world.location.x") && this.config.isDouble("world.location.z") && this.config.isDouble("world.location.y")){ double x = this.config.getDouble("world.location.x"); double y = this.config.getDouble("world.location.y"); double z = this.config.getDouble("world.location.z"); coordinate[0][0] = x; coordinate[1][0] = y; coordinate[2][0] = z; }else{ coordinate = null; } return coordinate; } return null; }
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Wo initialisierst du denn dein Array? Da kann ja überhaupt kein Platz sein, irgendwelche Datein reinzuschreiben.
Lg
mator -
double[][] coordinate = {};
Ich dachte das reicht, weil es bei einem eindimensionalen Array auch gereicht hat.
Kannst du mir sagen wie ich das richtig initialisiere?
Beitrag zuletzt geändert: 30.10.2012 20:40:54 von nilsmargotti -
Hallo nilsmargotti,
das reicht auch bei eindimensionalen Arrays nicht. Du hast nur das Glück, dass String.split() ein neues Array zurückliefert.
Ansonsten musst Du Arrays eigentlich auch mit 'new' anlegen.
Hier ein kleiner Link zum Thema:
http://www.go4expert.com/forums/showthread.php?t=1162 -
nilsmargotti schrieb:
double[][] coordinate = {};
Das ist Javascript, aber ich glaube in Java gibt es dieses Konstrukt garnicht, oder? Habe ich noch nie in irgend einem Tutorial gelesen. Aber richtig müsste es wohl:
double[][] coordinate = new double[3][100];
heißen, wenn es denn 3*100 Felder sein sollen.
Liebe Grüße -
Danke werde ich mir wohl für die Zukunft wohl sehr gut merken.
Ich hab jetzt nur 3*20 Felder genommen, d.h. 20 Blockpositionen können gespeichert werden ansonsten erweiter ich das einfach später mal. -
ggamee schrieb:
double[][] coordinate = {};
Das ist Javascript, aber ich glaube in Java gibt es dieses Konstrukt garnicht, oder? Habe ich noch nie in irgend einem Tutorial gelesen.
Doch gibt es schon. Folgender Code:
double[] Array = { 1, 2, 3 };
Wird in diesen vom Compiler umgewandelt:
double[] array = new double[3] array[0] = 1; array[1] = 2; array[2] = 3;
Diese Schreibweise ermöglicht es für den Programmierer ein Feld einfacher zu abzuändern, ohne dass er viel Code verändern muss.
Lg
mator
Beitrag zuletzt geändert: 30.10.2012 21:45:30 von mator-kaleen -
Hey,
in Java musst du immer die Anzahl der Array-stellen definieren sobald du dein Array initialisierst. Sowas wie Dynamische Arrays heißen in Java Collections aber das is ein anderes Thema :)
-
Wenn du dein Array lieber dynamischer handhaben möchtest, also eine variable Länge oder vielleicht auch zwischen schon definierten Indexes einen weiteren hinzufügen, ohne die anderen immer zuerst verschieben zu müssen, dann guck dir mal das hier an:
ArrayList: http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html
oder
Vector: http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Vector.html -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage