Hallo,
ich bin absoluter Anfänger und muss eine Aufgabe als Hausaufgabe lösen
In Bild 1 seht ihr meinen Code.
Ich habe ein Feld erstellt und möchte nun bei einzelnen Objekten einen Wert (in dem Fall die Farbe eines Kreises) ändern.
Wenn ich nun aber die Methode farbe_verändern starte (welche sich auf die Methode farbe_ändern innerhalb der Klasse Kreis bezieht) bekomme ich die Fehlermeldung java.lang.NullPointerException und angeblich sei der Wert des Feldes null, was er aber eigentlich nicht sein sollte da ich ihn ja geändert ("blau") habe. Auch auch standartmäßig ist der Wert nicht null sondern in meinem Fall "rot"
In Bild 2 seht ihr den Code der Klasse Kreis auf welche ich in meinem Hauptcode zugreife. Ich vermute das Problem liegt hier.
Vielleicht kann mir einer hier weiterhelfen! Danke für eure Zeit und Hilfe!
publicclassRalle_Perlenkette{Ralle_Kreis[]Ralle_Kette=newRalle_Kreis[11];publicvoid farbe_verändern (intNummer_der_Perle){Ralle_Kette[Nummer_der_Perle].farbe_ändern("blau");for(int a =0; a<Ralle_Kette.length-1; a++){System.out.println("Die Perle der Nummer"+ a +"hat die Farbe"+Ralle_Kette[a].farbe );}}}
Also es tritt eine NullPointerException auf, weil du dein Feld nicht mit Elementen gefüllt hast und da der Datentyp ein Referenzdatentyp ist, wird das Array beim initialisieren mit null gefüllt
Objektnamen sollten mit einem kleinen Buchstaben beginnen. Damit meine ich z.B. dein Ralle_Kette.
Bei Namen sollten keine Unterstriche verwendet werden, sondern CamelCase.
Bei Namen sollten keine Umlaute verwendet werden. Damit meine ich z.b. dein farbe_ändern.
Anstatt Nummer würde ich lieber Index schreiben. Es ist ja der Index gemeint.
Wenn die Schleife das ganze Array durchlaufen soll, darfst du nicht length-1 schreiben. Wenn du es trotzdem schreiben möchtest, musst du <= verwenden und nicht <.
In deinen Konsolenausgaben fehlen Leerzeichen. Derzeit würden Wörter wie z.B. Nummer0hat und aufblaugeändert ausgegeben werden.
Habe es gerade ausprobiert und zumindest bekomme ich jetzt keine Fehlermeldung mehr! Wenn ich mir aber nun die Werte der einzelnen Objekte in der Konsole ausgeben lass, bekomme ich nur @-Zeichen mit irgendwelchen Zahlen und Buchstabenkombinationen obwohl eigentlich überall als Wert "blau" drinstehen sollte.
Naja, wie der Name der Methode to String = zu String schon sagt, soll sie eine Stringrepräsentation eines Objektes zurück liefern. Wie dieser String aussieht ist deine Entscheidung.
Jede Klasse in Java verfügt über die Methode toString(), die sie von Object erbt. Jede Klasse in Java erbt automatisch von Object. Object selbst hat eine Implementation von toString(), die den Namen der Klasse und den Hashcode zurück liefert.
Das habe ich gemacht und ich bekomme nun sogar eine Ausgabe.
Aber leider steht dort immer nur "null", unabhängig davon ob ich einen String oder eine Zahl als Wert einsetzte.
Das habe ich gemacht und ich bekomme nun sogar eine Ausgabe.
Aber leider steht dort immer nur "null", unabhängig davon ob ich einen String oder eine Zahl als Wert einsetzte.
Das liegt daran, dass du in deinem Konstruktor nicht den Wert einer Instanzvariable zuweist sondern eine Variable mit den selben Namen initialisierst und somit deine Instanz nicht gefüllt ist. Die Instanzvariable enthällt den Wert null, da sie ein Referenzdatentyp ist und keine Referenz enthält