Bei einer Zufallsausgabe werden zu viel Ergebnisse ausgegeben

  • Themenstarter Themenstarter JonSoftware
  • Beginndatum Beginndatum
J

JonSoftware

Gast
Hallo,
wenn ich diesen Code ausführe, dann kommen nicht nur 3 Ausgaben, sondern mehrere:
Java:
public class classes {

    private String monday = "montag";
    private String tuesday = "dienstag";
    private String wednesday = "mittwoch";
    private String thursday = "donnerstag";
    private String friday = "freitag";

    private String maths = "Mathe";
    private String english = "Englisch";
    private String german = "Deutsch";
    private String physics = "Physik";
    private String biology = "Biologie";
    private String pe = "Sport";
    private String re = "Religion";
    private String art = "Kunst";
    private String geography = "Erdkunde";
    private String music = "Musik";
    private String politics = "Politik";
    private String swimming = "Schwimmen";
    private ArrayList<String> list5 = new ArrayList<>();

    public String setsubjects(){

        this.list5.add(maths);
        this.list5.add(english);

        String subjects = this.list5.get(new Random().nextInt(this.list5.size()));
        return subjects;

    }

    public String fff(){

        System.out.println(setsubjects());
        System.out.println(setsubjects());

        return setsubjects();

    }

    public void ddd(){

        if (fff().equals(this.maths)){
            this.list5.remove(this.english);
            System.out.println(setsubjects());
        } else if (fff().equals(this.english)){
            this.list5.remove(this.english);
            System.out.println(setsubjects());
        }
    }

    public void rrr(){

        fff();
        ddd();

    }

würde mich über eine Rückmeldung freuen!

LG
JonSoftware
 
Naja. Es werden entweder 5 oder 7 Sachen ausgegeben, je nachdem ob der setsubjects maths oder english zurück gibt.
fff() wird nämlich 2 oder 3 mal aufgerufen und hier werden jeweils 2 Augaben getätigt. Ist doch nicht so schwer, wenn man den Code mal Schritt für Schritt durchgeht.
 
Naja. Es werden entweder 5 oder 7 Sachen ausgegeben, je nachdem ob der setsubjects maths oder english zurück gibt.
fff() wird nämlich 2 oder 3 mal aufgerufen und hier werden jeweils 2 Augaben getätigt. Ist doch nicht so schwer, wenn man den Code mal Schritt für Schritt durchgeht.

Danke! Aber warum ruft er denn "fff()" mehrmals auf?
 
Also, ich möchte ein Programm erstellen, welches den Stundenplan meiner Schule berechnet. In den Methoden werden die versch. Stunden berechnet. Eine andere Methode prüft, ob in der einen Methode das Fach zweimal gibt. Außerdem sollte es pro Methode nur zwei Ausgaben geben.
 
Eine Methode sollte genau eine Aufgabe haben, beispielsweise etwas ausgeben, etwas berechnen, Daten beschaffen, ... . Deine Methode fff ist für mehrere Aufgaben zuständig. Das solltest du ändern.
 
Vielen Dank! Also wenn ich nur eine Stunde pro Methode berechne, dann gibt sie auch nur eine Ausgabe aus, oder?
 
Nein, das Problem ist, dass du die Methode fff manchmal aufrufst, um etwas auszugeben und manchmal, um ihren Rückgabewert in Bedingungsabfragen zu verwenden. Im Moment ist es eine kombinierte Ausgabe- und Berechnungs-Methode. Das ist nicht gut, denn so kann man fff nicht benutzen, ohne gleichzeitig etwas auszugeben.
 
Wir haben auch keine Idee wie du es machen möchtest und was deine Anforderungen sind.
Besser wäre es, wenn du dich noch mal zu den Grundlagen zurücksetzt und lernst wie Abläufe und Abstraktion von diesen funktionieren.
 

Zurück
Oben