kostenloser Webspace werbefrei: lima-city


Java Array Fehler

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    nilsmargotti

    Kostenloser Webspace von nilsmargotti

    nilsmargotti hat kostenlosen Webspace.

    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;
    	}
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. m**********n

    Wo initialisierst du denn dein Array? Da kann ja überhaupt kein Platz sein, irgendwelche Datein reinzuschreiben.

    Lg

    mator
  4. Autor dieses Themas

    nilsmargotti

    Kostenloser Webspace von nilsmargotti

    nilsmargotti hat kostenlosen Webspace.

    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
  5. 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
  6. g****e

    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
  7. Autor dieses Themas

    nilsmargotti

    Kostenloser Webspace von nilsmargotti

    nilsmargotti hat kostenlosen Webspace.

    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.
  8. m**********n

    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
  9. 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 :)
  10. 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
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!