Zufälliges Objekt aus der ArraylList ohne java.util.Random

Richtig. Aber man hätte auch einfach sagen können, dass mir eine while-Schleife fehlt statt drumrum zu reden
do
LiedAuswählen
while(gewähltes Lied in gespielt); // Achtung! Hier "while"!

Das wäre der Pseudocode.

Die Übersetzung davon lautet
"JUNGE DIR FEHLT EINFACH NUR EINE WHILE SCHLEIFE"
Zusammen mit der Anregung: Junge, du musst einfach nur lesen!
 
Zuletzt bearbeitet:
Richtig. Aber man hätte auch einfach sagen können, dass mir eine while-Schleife fehlt statt drumrum zu reden😀 Verstehe nicht was daran so schwer sein soll zu schreiben: "JUNGE DIR FEHLT EINFACH NUR EINE WHILE SCHLEIFE".
  • Der Hinweis kam
  • Es ist eben die schlechteste Lösung
  • Du hast die ganze Zeit auf etwas anderem behaart, wo man dich versucht hat von abzubringen
  • Vorsagen ist doch langweilig
 
Sorry, aber was ist so schwer, einen Ablauf zu verstehen? Im Augenblick bezweifle ich, dass Du das alles wirklich verstanden hast. Und wenn Antworten kommen, die Du nicht verstehst, dann frag gezielt nach.

In #28 ist das ein Bestandteil der Lösung, die ich angegeben habe!

Und Nein, Deine Lösung jetzt ist auch absoluter Schrott! Siehe #28 - da habe ich das auch erläutert (Und andere bestimmt auch).
 
Hier ist ein Beispiel dazu. Es wird ein Kartenstapel aus allen Kombinationen von Farbe und Wert erzeugt. Der Stapel wird gemischt und immer die oberste Karte gezogen. "Karte" könnte hier auch für "Lied" stehen.
Java:
public class Blatt {

    private final Deque<Karte> karten;

    public Blatt() {
        karten = new ArrayDeque<>();
        karten.addAll(erzeugeGemischteKarten());
    }

    private List<Karte> erzeugeGemischteKarten() {

        List<Karte> ergebnis = new ArrayList<>();

        for (Farbe farbe : Farbe.values()){
            for (Wert wert : Wert.values()) {
                ergebnis.add(new Karte(farbe, wert));
            }
        }

        Collections.shuffle(ergebnis, new Random(System.currentTimeMillis()));

        return ergebnis;
    }

    public Karte naechsteKarte() {
        return karten.poll();
    }

    public List<Karte> gebeKarten(final int anzahl) {

        int i = 0;

        List<Karte> ergebnis = new ArrayList<>();

        while (!karten.isEmpty() && i++ < anzahl) {
            ergebnis.add(naechsteKarte());
        }

        return ergebnis;
    }
}
 
Sorry, hatte ich übersehen.
Darauf will ich auch kurz antworten: Das ist absolut kein Problem. Es wurde mehrfach erwähnt. Wer was wann zum ersten Mal geschrieben hat, ist da auch vollkommen egal. Und meine Aussage sollte nicht sein "Ey, was wiederholst du, was ich schon längst geschrieben habe" sondern eher ein tiefer Ausdruck einer gewissen Resignation ... Diese führe ich aber nicht weiter aus, da es kontraproduktiv für den TE ist.

Generell ist es schön, dass Du eine Lösung gefunden hast @LucaToni. In meinen Augen ist es aber durchaus wichtig, auch die Problematik dieser Lösung zu verstehen (Große Menge an Liedern und nur noch wenige ungespielte Lieder). Desweiteren kann es eine gute Übung sein, es auch einmal anders zu probieren.
Die Antworten des Threads würde ich aber an deiner Stelle noch einmal durch gehen und schauen, ob Du diese verstehen kannst. Der Anfang des Threads bezüglich Random kannst Du ignorieren, aber ab #27 solltest Du die Antworten noch einmal durchgehen. Denn wir haben da sprachlich eigentlich nichts verwendet, was "nur Experten" verstehen und es werden ja noch weitere Aufgaben kommen und da wirst Du so Dinge aus meiner Sicht verstehen müssen. Daher wäre das eine gute Übung.

Und lass Dich nicht irritieren - auch wir sind nur Menschen und sind evtl. hin und wieder etwas enttäuscht oder so. Nimm das aber bitte nicht persönlich. Du und deine Fragen sind herzlich willkommen und ich bin sicher, dass alle hier auch weiter gerne bereit sind, Dinge haar klein zu erläutern (so du fragst). Und dumme Fragen gibt es hier nicht....

So, das lag mir noch etwas auf der Seele und das musste raus 🙂
 

Zurück
Oben