Wenn ich die Methode gibGroesseSequenzbehaelter2() wie unten in der KLasse stehend aufrufe, wird eine NPE geworfen. Wenn ich die Methode wie unten folgt abändere, funktioniert alles wie gewünscht. Problemlos kann ich in der Methode auch sequenzbehaelter2 auf der Konsole ausgeben, aber will ich sequenzbehaelter2.size() auf der Konsole ausgeben, kommt wiederdie NPE. Wie ist das zu erklären? An der Konsolenausgabe sehe ich, dass es die Sequenz gibt, warum sollte ich dann nicht auch deren size() ausgeben können?
Edit: Das ist kein dringliches Problem das gelöst werden muss, zum Laufen hab' ichs ja gebracht, ist rein interessehalber.
Edit: Das ist kein dringliches Problem das gelöst werden muss, zum Laufen hab' ichs ja gebracht, ist rein interessehalber.
Java:
//Methodenteil
public int gibGroesseSequenzbehaelter2(){
return (this.get(2).size());
}
Java:
import java.util.ArrayList;
public class SequenzbehaelterCollectionUebungen extends ArrayList<ArrayList<int[]>> {
ArrayList<int[]> schotter1;
ArrayList<int[]> schotter2;
ArrayList<int[]> sequenzbehaelter;
ArrayList<int[]> sequenzbehaelter2;
ArrayList<int[]> sequenzbehaelter3;
int[] sequenz;
public int[] gibSequenz(int laenge){
int laengeSequenz=laenge;
sequenzbehaelter = this.get(laengeSequenz);
sequenz =sequenzbehaelter.get(sequenzbehaelter.size()-1);
this.sequenzbehaelter.remove(sequenzbehaelter.size()-1);
return sequenz;
}
//Konstruktor
public SequenzbehaelterCollectionUebungen() {
Sequenzbehaelter schotter1 = new Sequenzbehaelter();
Sequenzbehaelter schotter2 = new Sequenzbehaelter();
Sequenzbehaelter sequenzbehaelter2 = new Sequenzbehaelter();
Sequenzbehaelter sequenzbehaelter3 = new Sequenzbehaelter();
//Sequenzen der Länge 2 erzeugen
int[] s2001 = {1,2};
int[] s2002 = {3,4};
//Sequenzen der Lange 3 erzeugen
int[] s3001 = {1,2,3};
int[] s3002 = {1,2,3};
//Sequenzen der Länge zwei in ihren Sequenzbehälter füllen
sequenzbehaelter2.add(s2001);
sequenzbehaelter2.add(s2002);
System.out.println(sequenzbehaelter2);
//Sequenzen der Länge drei in ihren Sequenzbehälter füllen
sequenzbehaelter3.add(s3001);
sequenzbehaelter3.add(s3002);
//Befüllen der SequenzbehaelterCollection
this.add(schotter1);
this.add(schotter2);
this.add(sequenzbehaelter2);
this.add(sequenzbehaelter3);
System.out.println(this.get(2));
}
//Methodenteil
public int gibGroesseSequenzbehaelter2(){
return (sequenzbehaelter2.size());
}
}