• Aktualisierte Forenregeln

    Eine kleine Änderung hat es im Bereich Forenregeln unter Abschnitt 2 gegeben, wo wir nun explizit darauf verweisen, dass Forenkommentare in unserer Heftrubrik Leserbriefe landen können.

    Forenregeln


    Vielen Dank

Java-Problem Klassen

rootie

Spiele-Novize/Novizin
Mitglied seit
13.05.2006
Beiträge
171
Reaktionspunkte
0
Ich steh grade aufem schlauch...mein Problem:

Ich will in einem objekt ein zweidimensionales Array haben, dessen Maße bei erstellen des Objektes übergeben werden:

_______________________________
public class test {
public static void main(String[] args) {
int x = 20;
int y = 30;
testklasse testobjekt = new testklasse(x,y);

testobjekt.array[3][4]=1;//ArrayIndexOutOfBoundsException
}
}
________________________________
public class testklasse {
int x;
int y;
String array[][] = new String[x][y];
public testklasse (int x, int y) {
this.x=x;
this.y=y;
}
}
_______________________________


wenn ich jetzt aber nach erstellung des objektes auf das array zugreifen will, gibt er mir ArrayIndexOutOfBoundsExceptions, obwohl die angeforderten Werte vorhanden sein müssten...warum?
 
Du legst das Array schon an bevor x und y mit Inhalt gefüllt sind. Die "array = new String[x][y]" Anweisung muss in den Konstruktor.
 
ok, neuer Versuch:
_______________________________
public class test {
public static void main(String[] args) {
int x = 20;
int y = 30;
testklasse testobjekt = new testklasse(x,y);

testobjekt.array[3][4]="a"; //NullPointerException
}
}
________________________________
public class testklasse {
int x;
int y;
String array[][]; //wenn ich das hier weglasse krieg ich direkt ne
//fehlermmeldung beim compilieren
public testklasse (int x, int y) {
this.x=x;
this.y=y;
String array[][]=new String[x][y];
}
}
_______________________________
 
rootie am 24.12.2008 17:32 schrieb:
String array[][]; //wenn ich das hier weglasse krieg ich direkt ne
//fehlermmeldung beim compilieren

Kein Wunder, dass ist die globale Deklaration des Arrays. Wenn das nicht dort steht würde das im Konstruktor angelegte Array nach Beenden des Konstruktors zerstört werden.

rootie am 24.12.2008 17:32 schrieb:
public testklasse (int x, int y) {
this.x=x;
this.y=y;
String array[][]=new String[x][y];
}
}
_______________________________

Da brauchst du dann einfach nur noch

array = new String[x][y];

schreiben, dass sollte funktionieren, tuts bei mir zumindestens.
 
Iceman am 24.12.2008 17:56 schrieb:
rootie am 24.12.2008 17:32 schrieb:
String array[][]; //wenn ich das hier weglasse krieg ich direkt ne
//fehlermmeldung beim compilieren

Kein Wunder, dass ist die globale Deklaration des Arrays. Wenn das nicht dort steht würde das im Konstruktor angelegte Array nach Beenden des Konstruktors zerstört werden.

rootie am 24.12.2008 17:32 schrieb:
public testklasse (int x, int y) {
this.x=x;
this.y=y;
String array[][]=new String[x][y];
}
}
_______________________________

Da brauchst du dann einfach nur noch

array = new String[x][y];

schreiben, dass sollte funktionieren, tuts bei mir zumindestens.

in den konstruktor, unter das " String array[][]=new String[x][y];"? dann krieg ich immer noch die gleiche fehlermeldung...
 
rootie am 24.12.2008 18:09 schrieb:
in den konstruktor, unter das " String array[][]=new String[x][y];"? dann krieg ich immer noch die gleiche fehlermeldung...

Nein, dass musst du weglassen. So:

public class testklasse {
int x;
int y;
String array[][];
public testklasse (int x, int y) {
this.x=x;
this.y=y;
array = new String[x][y];
}
}
 
Iceman am 25.12.2008 15:34 schrieb:
rootie am 24.12.2008 18:09 schrieb:
in den konstruktor, unter das " String array[][]=new String[x][y];"? dann krieg ich immer noch die gleiche fehlermeldung...

Nein, dass musst du weglassen. So:

public class testklasse {
int x;
int y;
String array[][];
public testklasse (int x, int y) {
this.x=x;
this.y=y;
array = new String[x][y];
}
}
ah, danke dir! jetz klappts!
 
Zurück