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.
Methode übernimmt nicht veränderte klassenvariable
Hallo, in der main methode wird die methode der 1. klasse aufgerufen die eine rechnung macht, diese werte dann in eine 2. klasse übergibt, wenn der wert 3 ist soll sich der wert einer anderen variable in der 2. klasse ändern. Funktioniert auch, nur wirds nicht gespeichert, denn der veränderte wert in der 2. klasse soll von einer anderen methode in der main aufgerufen werden und ausgegeben werden, wo ist mein fehler?
Der wert bleibt immer auf 0, die methode neueVariableNutzen() muss als ziel in der main klasse bzw main methode aufgerufen werden können. LG und danke
Code:
package Randomzeug;
public class Übung001 extends Übung002 {
static Übung001 a = new Übung001();
Übung002 b = new Übung002();
Übung003 c = new Übung003();
public static void main (String [] args) {
a.ha();
}
public void ha() {
b.irgendwasErhoehen();
c.neueVariableNutzen();
}
}
Code:
package Randomzeug;
public class Übung003 {
int neueVariable = 0;
public void irgendwasNutzen(int irgendwas) {
if(irgendwas == 3) {
neueVariable++;
//neueVariableNutzen();
//der wert ändert sich hier aber es muss unabhängig sein also in der main aufgerufen werden können, wenns geht...
}
}
public void neueVariableNutzen() {
System.out.println(neueVariable);
}
}
Code:
package Randomzeug;
public class Übung002 {
Übung003 klasseDrei = new Übung003();
int irgendwas = 0;
public void irgendwasErhoehen() {
for(int i = 0; i < 4; i++) {
irgendwas++;
klasseDrei.irgendwasNutzen(irgendwas);
}
}
}
Wenn ich das richtig verstanden habe,, ist dein Problem, dass du zwei unabhängige Instanzen der Klasse Übung003 hast. Eine Instanz erzeugst du als Instanzvariable in Übung001 und die andere als Instanzvariable in Übung002. Wenn du nun in main() `c.neueVariableNutzen();` aufrufst, dann rufst du die Methode auf dem bisher noch völlig unberührten Objekt in `c` auf. Das Objekt, dessen Werte geändert wurden, ist aber das Übung003 Objekt in Übung002. Du müsstest also nur eine Übung003 Instanz erzeugen und diese z.B. per Konstruktorparameter in Übung002 setzen.
Ich glaube, die Motivation ist ziemlich niedrig, weil bei deinem Nonesense-Code (Übung001-003, irgendwas, irgendwasErhoehen, irgendwasNutzen) überhaupt nicht klar ist, was du damit eigentlich machen willst. Was ist das Ziel davon? Wenn man das weiß, kann man bessere Lösungswege präsentieren.
Ansonsten: https://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html
Ich glaube, die Motivation ist ziemlich niedrig, weil bei deinem Nonesense-Code (Übung001-003, irgendwas, irgendwasErhoehen, irgendwasNutzen) überhaupt nicht klar ist, was du damit eigentlich machen willst. Was ist das Ziel davon? Wenn man das weiß, kann man bessere Lösungswege präsentieren.
Ansonsten: https://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html
Da hast du recht, ich mach es nächstes mal besser. Nur hast du doch letztens ne lösung beschrieben, ich weiss nicht wo ich die instanz erstellen soll und wie und wo der konstruktor hin kommt, weil ich damit noch nie gearbeitet habe, daher der wunsch nach code beispiel.
Die "neueVariable" ist eigentlich der score der in meinem spiel erhöht wird, wenn bestimmte vorraussetzungen erfüllt sind, also wenn "irgendwas" = 3 ist. Danach soll halt eine methode aufgerufen werden (neueVariableNutzen()) die den scorewert der ScoreKlassen (Klasse Übung003) nehmen soll und ausgeben soll. Nur speichert er das anscheinend im objekt in Übung002 und um diese problem zu lösen hilft mir nur kaliber 50 weiter