Array in Klasse geht nich

  • Themenstarter Themenstarter PhantomXXL
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
P

PhantomXXL

Gast
Code:
public class FastTemplate {

	...

	private boolean UNKNOWNS[];

	...

	FastTemplate (String pathToTemplates) {
60:		init();
		...
	}

	...

	void init() {
77:		UNKNOWNS[0]=false;
		...
	}

	...

}

Ergebnis beim erstellen der Klasse im Hauptprogramm:

java.lang.NullPointerException
FastTemplate.init(FastTemplate.java:77)
FastTemplate.<init>(FastTemplate.java:60)


Aber wieso?!

Edit Illuvatar: Codetags!!!
 
Sieht so aus, als wäre UNKNOWNS nicht initialisiert worden:

Code:
private boolean UNKNOWNS[] = new boolean[<anzahl>]; // <anzahl> entspricht der gewollten Array-Größe

Edit Illuvatar: Und noch ein paar Codetags 😀 diesmal waren sie aber wenigstens schon zur Hälfte da 😱
 
mal davon ausgegangen der Array soll dynamisch erweitert werden, geht nich?

(bin vor ner woche von php auf java+tomcat umgestiegen wegen geschwindigkeit)
 
Ein Array läßt sich nicht dynamsich erweitern. Dann guck Dir mal ArrayList an. Ansonsten kannste das auch 'per Hand erweitern:
Code:
boolean temp[] = new boolean[UNKNOWNS.length*2]; // array anlegen, welches doppelt so groß ist
System.arraycopy(UNKNOWNS, 0, temp, 0, UNKNOWNS.length); // copy UNKNOWNS -> temp
UNKNOWNS = temp; // temp -> UNKNOWNS zuweisen
 
kann ich das ganze dana uch so in ne funktion packen?

Code:
private boolean arrayerweitern( boolean alt[], int laengedazu ) {
boolean neu[] = new boolean[alt.length+laengedazu];
System.arraycopy(alt, 0, neu, 0, alt.length);
return alt;
}

UNKNOWN = arrayerweitern(UNKNOWN,1);
 
ja, das geht schon, nur muss die Methode arrayerweitern ein boolean[] zurückgeben:

Code:
private boolean[] arrayerweitern( boolean alt[], int laengedazu ) {
 
wie sollte das system.arraycopy aussehen wenn es sicht um einen String[][] handelt?
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben