Weiß jemand, wo mein Problemist?
Ich weiß nicht wirklich, wo das Problem liegt, aber das Programm sagt, es sei in der Klasse „Rennen“ und das Problem liegt in der Methode „lasseMaeuseSprinten“ und „maus.sprinte(maxSpeed, weg)“. Ich hoffe, jemand kennt die Antwort .
Der Code dafür ist hier:
public class Rennmaus {
private String name ;
private String rasse;
public int maxSpeed;
public int weg;
public Rennmaus(String name, String rasse, int maxSpeed, int weg) {
this.name = name ;
this.rasse = rasse ;
this.maxSpeed = 56 ;
this.weg = weg ;
}
public void sprinte (int maxSpeed, int weg) {
int strecke = (int)((Math.random()*maxSpeed)+1);
this.weg += strecke ;
}
public String toString() {
String s = "Name : " +name+ "rasse : " +rasse+ "Strecke : " +weg;
return s ;
}
}
And the second one is here:
import java.util.ArrayList;
class Rennen {
private String namen;
private int anzahlTeilnehmer;
private ArrayList<Rennmaus> teilnehmendeMaeuse= new ArrayList <Rennmaus> ();
private int längeStrecke;
public Rennen(String namen, int rennStrecke) {
this.namen = namen;
this.längeStrecke = längeStrecke;
this.teilnehmendeMaeuse = new ArrayList<Rennmaus>();
this.anzahlTeilnehmer = 0;
}
public void addRennmaus(Rennmaus neueMaus) {
teilnehmendeMaeuse.add(neueMaus);
anzahlTeilnehmer++;
}
public String toString() {
String result = "Rennen: " + namen + ", Teilnehmer: " + anzahlTeilnehmer + ", Renndistanz: " + längeStrecke + "\nTeilnehmende Mäuse:\n";
for (Rennmaus maus : teilnehmendeMaeuse) {
result += maus.toString() + "\n";
}
return result;
}
public int lasseMaeuseSprinten() {
for (Rennmaus maus : teilnehmendeMaeuse) {
maus.sprinte(maxSpeed, weg);
}
}
}
2 Antworten
Wenn ich das richtig sehe fehlt in der besagten Methode sowohl ein return als auch eine Definition der Variablen maxSpeeed und weg.
Desweiteren solltest du überlegen ob du in der Methode sprinte überhaupt Parameter brauchst oder ob du stattdessen die Attribute der Klasse verwenden möchtest. Gerade ist es durcheinander, du erwartest entsprechend Parameter nutzt aber nur den einen davon und schreibst das Ergebnis in den Wert des Klassen Attributs.
Wenn du eine Methode mit dem Return-Typ "int" deklarierst, muss die auch einen Integer zurückgeben. Aktuell wird nichts zurückgegeben.
Aber ich könnte das so machen um den Fehler zu beheben?
Also fals ich das richtig verstanden habe, fehlt bei der Methode sprinte ein return mit dem weg und die Methode ansich wird von Void zu int umgewandelt.