Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
KapselungArray in Set ändern und in Main ausgeben lassen
Hallo,
ich habe hier eine Instanzvariable erstellt, die mir ein Array in der Methode an der Stelle 0 in 6 ändert und diese dann in meiner zweiten Klasse wo ich mein Objekt erstellt habe ausgeben lassen soll, nur zeigt der mir nichts an. Weiß jemand woran es genau liegt und könnte mir bitte bei der Fehlerfindung helfen?
Freundliche Grüße
Java:
//Erste Klasse
public class Test {
private int[] arrayWuerfel;
public Test(int[] wuerfel){
this.arrayWuerfel = wuerfel;
}
public void setArrayWuerfel(){
this.arrayWuerfel = new int[5];
this.arrayWuerfel[0] = 6;
System.out.println(arrayWuerfel[0]);
}
public int[] getArrayWuerfel(){
return this.arrayWuerfel;
}
//Zweite Klasse
public class Ausgabe {
public static void main(String[] args){
Test t1 = new Test(null);
t1.getArrayWuerfel();
}
}
Also, hier mal eine Zusammenfassung dessen, was hier passiert:
1. Du erzeugst ein Test Objekt mit null als Konstruktorparameter
2. Im Konstruktor wird daraufhin die Instanzvariable arrayWuerfel in dem Test Objekt auf null gesetzt
3. Zurück in der main() Methode speicherst du dieses neue Test Objekt in der lokalen Variablen t1
4. Dann rufst du auf dem Test Objekt in t1 die getArrayWuerfel() Methode auf, die, wenn wir uns die Methode angucken, effektiv null zurückliefert
5. Das war's
Vielen dank für deine Antwort. Wie kann ich ein Arrayparameter im Objekt ändern? Hatte es mit verschiedenen Hinsichten probiert, bis auf null kam immer ein Fehler, weswegen ich es so gelassen hab und es dann direkt in der Methode ändern wollte um den Parameter sozusagen zu ersetzen. Wenn null meinem Konstruktor mitgeteilt wird, aber ich den Array in der setMethode geändert habe, heißt es das in der Methode wegen void nichts passiert und die Änderung nicht an die Instanzvariable gelangt?
Was ich eigentlich sagen wollte, ist: Du rufst niemals setArrayWuerfel() auf. Alles, was du machen wolltest, passiert doch hauptsächlich in dieser Methode. Die wird aber niemals aufgerufen.