Java Methode einer anderen klasse bentuzen
Ich hab vollgendens problemm ich versuche die methode wuerfeln() aus der klasse ZweiWuerfel in der klasse Spieler1 zu verwenden und ich bekomme immer den error: "cannot find symbel- method maybe you meant wuefeln()" - Ja ich meine wuerfeln habs aber auch korrekt geschrieben, danke für die hilfe Zwei würfel: public class ZweiWuerfel {
private int wuerfel1;
private int wuerfel2;
public int ergebniss;
public ZweiWuerfel() { ergebniss = 0; wuerfel1 = 0; wuerfel2 = 0;
}
public int wuerfeln()
{
wuerfel1 = (int)(6*Math.random())+1;
wuerfel2 = (int)(6*Math.random())+1;
if (wuerfel1 >= wuerfel2)ergebniss = wuerfel1 *10 + wuerfel2;
if (wuerfel1 < wuerfel2) ergebniss = wuerfel2 *10 + wuerfel1;
return ergebniss;
}
}
Spieler 1: public class Spieler1 { private int ergebnissSp1; private int luegeSp1; private boolean luege; public ZweiWuerfel wuerfeln; public ZweiWuerfel Ergebniss;
public Spieler1() {ergebnissSp1 = 0; luege = false;
}
public void werfen() { wuerfeln(); }
}
2 Antworten
Du musst die Methode schon an einem Objekt aufrufen damit das so funktioniert!
ZweiWuerfel zw = new ZweiWuerfel();
zw.wuerfeln();
Alternativ, da deine ZweiWuerfel-Klasse keinen (wirklichen) Zustand hat (die Felder kannste auch als lokale Variablen in die wuerfeln()-Methode ziehen) kannste die Methode wuerfeln() auch static definieren.
public static int wuerfeln() { ... };
Dann kannst du sie direkt über die Klasse aufrufen und musst dir kein Objekt instanziieren:
ZweiWuerfel.wuerfeln().
Da hast du wohl einen Syntaxfehler gemacht. Müsstest du schon die ganze Klasse herzeigen, damit ich dir sagen kann welchen...
Ich glaube du musst die Punktnotation verwenden. Das könnte wie folgt lauten:
public void werfen() { ZweiWuerfel.wuerfeln(); }
Bitte um Antwort wenn es funktioniert.
Sein Tipp funktioniert nur, wenn du vorher ein neues Objekt erstellst.
D.h:
ZweiWuerfel ZweWuerfel = new ZweiWuerfel;
ZweiWuerfel.ZweiWuerfel();
Dann sollte es funktionieren.
ehm nun kommt folgende fehler meldung "non static method wuerfeln() cannot be referenced from a static context"
bei mir kommt wenn ich es so ähnlich mache die Meldung "<identifier> expected"
Warum??? (mit so ähnlich meine ich lediglich andere Bezeichnungen sonst gleich)