NullPointerException bei Zugriff auf array

Status
Nicht offen für weitere Antworten.

Turamisi

Mitglied
Hallo zusammen,

Ich verstehe nicht, warum ich folgende Fehlermeldung bekomme:

Exception in thread "main" java.lang.NullPointerException
at arrayPackage.StartClass.main(StartClass.java:10)


Hier mein Code:

Code:
//StartClass.java
package arrayPackage;

public class StartClass {

	public static void main(String[] args) {
		ArrayClass ac = new ArrayClass();
		
		ac.setSize(3);
		ac.a[1] = 12345;
	}
}

Code:
//ArrayClass.java
package arrayPackage;

public class ArrayClass {
	public int a[];
	
	public void setSize(int size) {
		int a[] = new int[size];
		
		for (int i = 0; i < size; i++) {
			a[i] = i;
		}
	}
}

Was mich eben wundert ist,
- dass ich beim Aufruf von setSize(int size) mit "a = i" dem Array ohne Fehler Werte zuweisen kann,
- dass ich aber dann über "ac.a[1] = 12345" wieder nicht auf das Array zugreifen kann.

Würde mich über Antworten freuen.
 
Code:
   public void setSize(int size) {
      this.a = new int[size];
      
      for (int i = 0; i < size; i++) {
         a[i] = i;
      }
   }
 
Ja, hierauf kommt es an:
a = new int[size];
sonst initialisierst du ja nur ein lokales Array

EDIT: Turamisi kommt sicher von Tiramisu 😀
 
Turamisi hat gesagt.:
Exception in thread "main" java.lang.NullPointerException
at arrayPackage.StartClass.main(StartClass.java:10)
Endlich mal eine korrekt wiedergegebene Fehlermeldung. :toll:

Turamisi hat gesagt.:
Code:
//ArrayClass.java
public class ArrayClass
{
    public int a[];
	
    public void setSize(int size)
    {
        int a[] = new int[size];
        // some stuff deleted ;-)		
    }
}
Wenn du mit
Code:
ac.setSize(3); 
ac.a[1] = 12345;
auf dein Array zugreifst, wird in Zeile 1 die Größe des int-Array innerhalb deiner setSize-Methode gesetzt. In Zeile 2 greifst du aber - direkt (was ein böses Foul ist) auf int-Array der Klasse ArrayClass zu. Und das hast du in setSize überhaupt nicht bestückt, es ist leer - daher die Exception. Klar geworden?
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben