Probleme im Umgang mit PriorityQueue

xImJugo

Aktives Mitglied
Hallo,
ich sitze jetzt hier schon wieder stundenlang vor einer Modellierungsaufgabe, bei der man eine Warteschlange von Liedern modellieren soll, wo die Lieder jeweils eine Zahl ( = Priorität ( Zahl zwischen 1 und 5) bekommen). Die PriorityQueue soll diese Lieder dann entsprechend speichern und anordnen. Also Priorität 1 entspricht der höchster und 5 der kleinsten. Ich hab von Comparable, Comparator zu compareTo etc alles versucht, aber irwas klappt einfach nicht -_- Hab wie gesagt eine Klasse Song (entsprechend der Aufgabe mit den Attributen und der Priorität) und eine Klasse Musicplayer mit der PriorityQueue. Kann wir wer nen Vorschlag machen ?

// Das scheint nicht der Way to go zu sein
Code:
import java.util.Comparator;

public class Song implements Comparator<Song> {
....

public int compare(Song s1, Song s2) {

        if (s1.getPriority() < s2.getPriority()) {
            return -1;

        } else if (s1.getPriority() > s2.getPriority()) {
            return 1;

        }
        return 0;

    }
    }

2. Ich hab bezüglich dieser Datenstruktur und der Aufgabe noch einige Fragen, aber zunächst belass ich es mal bei der Hauptsache mit dem Sortieren
 

xImJugo

Aktives Mitglied
Code:
Das ist Methode 2 die ich probiert habe und eigentlich klappen sollte -_-

public class Song implements Comparable<Song> {
...

@Override
    public int compareTo(Song s) {
        if (this.priority < s.getPriority())
            return -1;
        if (this.priority > s.getPriority())
            return 1;
        return 0;
    }
    }
 

httpdigest

Top Contributor
Ein Song ist kein Comparator, sondern ein Comparable. Also ein Song ist "vergleichbar" oder "kann verglichen werden" mit einem (anderen) Song. Somit nicht Comparator sondern Comparable:
Java:
public class Song implements Comparable<Song> {
  private int priority;
  @Override
  public int compareTo(Song o) {
    return Integer.compare(priority, o.priority);
  }
}
EDIT: Gerade geschrieben und gepostet, als du deinen 2. (korrigierten) Post gesendet hast.
 

xImJugo

Aktives Mitglied
Ein Song ist kein Comparator, sondern ein Comparable. Also ein Song ist "vergleichbar" oder "kann verglichen werden" mit einem (anderen) Song. Somit nicht Comparator sondern Comparable:
Java:
public class Song implements Comparable<Song> {
  private int priority;
  @Override
  public int compareTo(Song o) {
    return Integer.compare(priority, o.priority);
  }
}
EDIT: Gerade geschrieben und gepostet, als du deinen 2. (korrigierten) Post gesendet hast.

Es klappt inzwischen auch. Ich bin so dumm. Ein einziges Zeichen bei dem Priority setter war falsch und deswegen hatten alle meine Songs keine gültige Priorität und deswegen hats auch nicht funktioniert.

Aber eine andere Frage gibt es eine Möglichkeit alle meine Songs aus der Liste zu printen ohne remove/poll zu benutzen ? Wenn nicht, dann muss ich ja meine Songs löschen und umkopieren oder seh ich das falsch?
 

MoxxiManagarm

Top Contributor
Aber eine andere Frage gibt es eine Möglichkeit alle meine Songs aus der Liste zu printen ohne remove/poll zu benutzen ?
Ja, z.B.
Java:
priorityQueue.forEach(System.out::println);

Oder Mit dem Iterator
Java:
Iterator<Song> iterator : priorityQueue.getIterator();
while(iterator.hasNext()) {
  System.out.println(iterator.next());
}
 

xImJugo

Aktives Mitglied
Okey stopp,
wie iteriert man denn üblicherweise durch eine Priority Liste ? Ich denk mal ich werd das die ganze Zeit brauchen. Beim printen klappt es zwar, aber ich hab da noch paar Methoden zu machen .
Zum Beispiel eine add methode, die folgendes erfüllen soll : " Fügt der Wiedergabeliste ein neues Lied mit den angegebenen Attributen hinzu. Aber es kann nicht sein, dass ein Lied mit der gleichen Kennung (id : Attribut von einem Song) mit unterschiedlichen Attributen (Länge, Titel, Sänger) hinzugefügt wird.

Hier war meine Idee dass wenn die Liste leer ist, kann man den ersten Song ja so oder so hinzufügen aber dann müsste man für jeden weiteren durch die Queue iterieren und überprüfen ob die ID von dem Song den man hinzufügen möchte bereits vorhanden ist. Wenn ja, dann muss es der gleiche Song mit gleichen Attributen sein. Wenn nicht, dann darf der Song nicht hinzugefügt werden, aber wie gesagt wie prüfe ich das ? Bei Arrays oder einer Arrayliste wäre das einfacher, da das Iterieren einfacher ist, aber bei der PriorityQueue check ich es noch nicht ganz
 

xImJugo

Aktives Mitglied
Ja, z.B.
Java:
priorityQueue.forEach(System.out::println);

Oder Mit dem Iterator
Java:
Iterator<Song> iterator : priorityQueue.getIterator();
while(iterator.hasNext()) {
  System.out.println(iterator.next());
}
Ich hatte es so :
Code:
public void list() {
        for (Song s : queue)
            System.out.println(s);
    }
und es hat geklappt, aber das Konzept mit dem iterieren fällt mir trotzdem recht schwer hier.
 

xImJugo

Aktives Mitglied
Ja, z.B.
Java:
priorityQueue.forEach(System.out::println);

Oder Mit dem Iterator
Java:
Iterator<Song> iterator : priorityQueue.getIterator();
while(iterator.hasNext()) {
  System.out.println(iterator.next());
}
Das mit dem Iterator hatte ich vorhin schon ausprobiert, aber es hat nicht geklappt, aber weiß inzwischen auch warum. Danke dir!
 

MoxxiManagarm

Top Contributor
aber dann müsste man für jeden weiteren durch die Queue iterieren und überprüfen ob die ID von dem Song den man hinzufügen möchte bereits vorhanden ist.
Ich würde erst gar nicht zulassen eine andere Instanz von Song mit der gleichen ID zu erstellen. Das schaffst du z.B. wenn die Klasse Song selbst die ID generiert und nicht übergeben bekommt.

Aktuell hast du vermutlich etwas in der Art:
Java:
class Foo {
  private int id;
  private String value;

  public Foo(int id, String value) {
    this.id = id;
    this.value = value;
  }
}

Es könnte aber auch so sein:
Java:
class Foo {
  private static int NEXT_ID = 1;

  private int id;
  private String value;

  public Foo(String value) {
    this.id = NEXT_ID++;
    this.value = value;
  }
}

Ich hatte es so: ... und es hat geklappt, aber das Konzept mit dem iterieren fällt mir trotzdem recht schwer hier.
War ja auch nicht verkehrt, ich hatte nur 2 Beispiele aufgeführt.

wie iteriert man denn üblicherweise durch eine Priority Liste
Mit einer dieser Varianten ^^ Es gibt keine richtigere Variante
 

xImJugo

Aktives Mitglied
Ich würde erst gar nicht zulassen eine andere Instanz von Song mit der gleichen ID zu erstellen. Das schaffst du z.B. wenn die Klasse Song selbst die ID generiert und nicht übergeben bekommt.
Also ist zwar ein netter Gedanke und wäre einfacher für mich, aber die Aufgabe hat es so vorgegeben und die Aufgabe lässt es auch zu, dass man gleiche Songs mit der gleichen ID hinzufügen darf. Es darf nur nicht vorkommen, dass man eine gleiche ID bei 2 Liedern hat, wo die anderen Attribute nicht übereinstimmen . Also kann ich es nicht so machen /:

Aktuell hast du vermutlich etwas in der Art:
Java:
class Foo {
  private int id;
  private String value;

  public Foo(int id, String value) {
    this.id = id;
    this.value = value;
  }
}

Es könnte aber auch so sein:
Java:
class Foo {
  private static int NEXT_ID = 1;

  private int id;
  private String value;

  public Foo(String value) {
    this.id = NEXT_ID++;
    this.value = value;
  }
}


War ja auch nicht verkehrt, ich hatte nur 2 Beispiele aufgeführt.


Mit einer dieser Varianten ^^ Es gibt keine richtigere Variante

Kannst du mir mit dem Itterator anhand der print/list methode illustrieren, wie man das gescheit macht. Mein Ansatz klappt zwar, aber wie gesagt ich brauch das iterieren ja trotzdem für gefühlt alle Aufgaben :/ ich hatte es so versucht :
Code:
public void list() {
       while( iterator.hasNext())
    Song s = iterator.Next();
    System.out.println(s);
    } // liefert Fehler mit einer Exception aber weiß nicht wieso

edit : muss ich beim iterator und der liste etwas inkrementieren bzw dekrementieren ?
 
Zuletzt bearbeitet:

xImJugo

Aktives Mitglied
Weil du bei Schleifen Klammern benötigst, wenn der Schleifenrumpf mehr als eine Zeile hat.
Lag nicht daran . Fehler besteht immernoch. So klappt es schon eher, aber es endet in einer Endlosschleife mit nur dem obersten Element :
Code:
public void print1() {
        while (queue.iterator().hasNext()) {
            Song s = queue.iterator().next();

            Terminal.printLine(s);
        }
    }
 

xImJugo

Aktives Mitglied
Code:
import java.util.Iterator;
import java.util.PriorityQueue;

import edu.kit.informatik.Terminal;

public class MusicPlayer {

    PriorityQueue<Song> queue = new PriorityQueue<Song>();
    Iterator<Song> iterator = queue.iterator(); // oder liegt hier der Fehler??

Du hast oben bei dir eine getter methode hier benutzt? Braucht der Iterator eine extra Klasse ?
 

mrBrown

Super-Moderator
Mitarbeiter
Lag nicht daran . Fehler besteht immernoch. So klappt es schon eher, aber es endet in einer Endlosschleife mit nur dem obersten Element :
Code:
public void print1() {
        while (queue.iterator().hasNext()) {
            Song s = queue.iterator().next();

            Terminal.printLine(s);
        }
    }
Jetzt erstellst du jedes Mal einen neuen Iterator, du darfst in der Methoden nur einen einzelnen nutzen.
 

xImJugo

Aktives Mitglied
Jetzt erstellst du jedes Mal einen neuen Iterator, du darfst in der Methoden nur einen einzelnen nutzen.
Bin leider ein Wenig lost, was das angeht. Hab bisher nur mit Arrays und Arraylisten gearbeitet. Das mit der Priority queue und dem iterator ist leider etwas neu für mich und ich find auch wenig dazu.

Was passiert denn hier genau :
Code:
PriorityQueue<Song> queue = new PriorityQueue<Song>();
    Iterator<Song> iterator = queue.iterator();
    // Hier wird doch meine Liste erstellt und der iterator auf die Liste gerichtet oder ?

Also muss es dann doch wie vorher aussehen :

Code:
public void print1() {
        while (iterator.hasNext()) {
            Song s = iterator.next();

            Terminal.printLine(s);
        }
    }
Aber hierdurch bekomme ich eine ConcurrentModificationException ?? Was übersehe ich ? Muss ich den iterator noch irgendwie initialisieren? platzieren ? irwas überschreiben oder noch beachten?
 
K

kneitzel

Gast
Was machst du denn mit der Queue während du den Iterator nutzt? Versuchst du Elemente im Iterator zu löschen (ohne den Iterator zu nutzen)?
 

mrBrown

Super-Moderator
Mitarbeiter
Was machst du denn mit der Queue während du den Iterator nutzt? Versuchst du Elemente im Iterator zu löschen (ohne den Iterator zu nutzen)?
Der Iterator ist bei ihm keine lokale Variable, sondern wird zusammen mit der leeren Liste erstellt, das muss also unweigerlich schief gehen :)


Das mit der Priority queue und dem iterator ist leider etwas neu für mich und ich find auch wenig dazu.
Du warst quasi schon fertig, du musst in diesem Code nur aus dem Iterator eine lokale Variable machen:

Code:
public void print1() {
        while (queue.iterator().hasNext()) {
            Song s = queue.iterator().next();

            Terminal.printLine(s);
        }
    }



Allerdings frage ich mich, ob du dafür wirklich eine PriorityQueue mit Iterator nutzen sollst? Der Iterator durchläuft die Elemente in zufälliger Reihenfolge, und nicht sortiert nach Priorität.
 

xImJugo

Aktives Mitglied
Der Iterator ist bei ihm keine lokale Variable, sondern wird zusammen mit der leeren Liste erstellt, das muss also unweigerlich schief gehen :)



Du warst quasi schon fertig, du musst in diesem Code nur aus dem Iterator eine lokale Variable machen:





Allerdings frage ich mich, ob du dafür wirklich eine PriorityQueue mit Iterator nutzen sollst? Der Iterator durchläuft die Elemente in zufälliger Reihenfolge, und nicht sortiert nach Priorität.

Ich hab das auch schon jetzt zig male gesehen, dass der Iterator random die Elemente durchläuft und ich weiß auch nicht und ich zweifel auch die ganze Zeit daran, ob das der Weg ist. Ich liste euch mal kurz die ganzen Befehle auf und vielleicht könnt ihr mir dann helfen, wie ich das modellieren bzw umsetzen sollte :

1) add : Der Liste wird entsprechend der Priorität ein neuer Song hinzugefügt (dafür muss ich auch durch alle Elemente der Queue iterieren, damit ich pürfen kann, ob alles der Aufgabe entsprechend passt)

2) remove(id) : Hier müssen alle Lieder mit der gegebene id gelöscht werden ( also auch hier muss ich durch die queue um alles nach der Id zu filtern )

3)play (length) : Abspielen von einem Lied wird simuliert ( hier muss glaube ich nicht iteriert werden, da ich einfach mit dem 1. Element starte, die zeit von der Länge des Lieds abziehe und prüfe ob diese 0 ist, wenn ja dann poll und ggnf nächstes lied. Wenn nicht dann bleibt es noch in der Liste mit der neuen Zeit)

4)skip : überspringt überspringt das nächste lied und löscht es aus der Liste ( sollte einfach sein i guess)

5)peek : zeigt das oberste Lied in dem entsprechenden Format ( auch ohne Iteration und sollte auch einfach sein)

6) list : soll die Liste entsprechend der Priorität printen ( iteration notwendig. Meine for each schleifen Lösung printet zwar, aber eben nur die 2 obersten Elemente richtig. Also es verlgeicht ja nur die 2. Ist das Normal oder gibts dafür eine Lösung ?

7) history : printet die vollständig gespielten Lieder ( also wenn ich bei play ein Lied entferne speicher ich es einfach in einer neuen Liste oder ?) Aber auch hier brauch ich wieder Iterationen

Also ihr seht glaub ich schon, dass ich ohne mein Iterationsproblem nicht weit komme, weil prinzipiell habe ich ja schon Ideen, wobei ich bei paar Methoden sicherlich noch Fragen stellen werden, aber im Allgemeinen weiß ich, was ich machen muss. Aber kann mir wer sagen, wie ich das iterieren geschickt mache ?
 

mrBrown

Super-Moderator
Mitarbeiter
Fordert die Aufgabe explizit, dass die java.util.PriorityQueue genutzt wird?


6) list : soll die Liste entsprechend der Priorität printen ( iteration notwendig. Meine for each schleifen Lösung printet zwar, aber eben nur die 2 obersten Elemente richtig. Also es verlgeicht ja nur die 2. Ist das Normal oder gibts dafür eine Lösung ?
for-each nutz auch nur einen Iterator.
Mit Iterator, forEach & for-each wirst du immer eine zufällige Reihenfolge ausgegeben bekommen.

Also ihr seht glaub ich schon, dass ich ohne mein Iterationsproblem nicht weit komme, weil prinzipiell habe ich ja schon Ideen, wobei ich bei paar Methoden sicherlich noch Fragen stellen werden, aber im Allgemeinen weiß ich, was ich machen muss. Aber kann mir wäre sagen, wie ich das iterieren geschickt mache ?
Eine for-each-Schleife, "per Hand" iterieren musst du für keine der Aufgaben.
 

xImJugo

Aktives Mitglied
Fordert die Aufgabe explizit, dass die java.util.PriorityQueue genutzt wird?



for-each nutz auch nur einen Iterator.
Mit Iterator, forEach & for-each wirst du immer eine zufällige Reihenfolge ausgegeben bekommen.


Eine for-each-Schleife, "per Hand" iterieren musst du für keine der Aufgaben.

Theoretisch fordert sie es nicht, aber vom Aufgabensteller kam die explizite Empfehlung diese Klasse zu nutzen. Das heißt übersetzt, dass es sicherlich Punktabzug gibt, wenn man es nicht tut.

Also wenn ich dich richtig verstehe heißt es dann doch, wie ich oben beschrieben habe, dass ich dauerhaft peek und poll benutzen muss ? Also immer löschen und wieder hinzufügen oder so? Weil so bleibt die Reihenfolge gewährleistet ?
 

mrBrown

Super-Moderator
Mitarbeiter
Also wenn ich dich richtig verstehe heißt es dann doch, wie ich oben beschrieben habe, dass ich dauerhaft peek und poll benutzen muss ? Also immer löschen und wieder hinzufügen oder so? Weil so bleibt die Reihenfolge gewährleistet ?
Eigentlich wollte ich damit aussagen, dass eine PriorityQueue eine schlechte Wahl für diese Anforderungen ist :)


Aber ja, der einzige Weg, eine PriorityQueue in korrekter Sortierung auszugeben, ist alle Elemente zu entfernen (und dabei dann notwendigerweise in eine neue Collection zu überführen). Das ist aber offensichtlich ziemlicher Unsinn, und eine andere Collection wäre für die Anforderungen deutlich bessre geeignet.
 
K

kneitzel

Gast
Also das mit der lokalen Variable lag doch schon hinter uns ... so hatte ich es doch verstanden...

Wichtig ist, dass du innerhalb eines Iterators keine Elemente löschen kannst ... also kein for each um dann ein Element zu löschen. Da dann entweder iterator() nutzen und dann auf dem Iterator remove() aufrufen um das aktuelle Element zu löschen (optionale Operation, kann ggf. Nicht unterstützt sein) oder du füllst beim durchgehen eine Liste mit zu löschenden Elemente um dann ein removeAll zu machen oder durch die temporäre Liste zu internieren um dann alle Elemente zu löschen ... das um mal zwei Möglichkeiten zu nennen ...
 

xImJugo

Aktives Mitglied
Eigentlich wollte ich damit aussagen, dass eine PriorityQueue eine schlechte Wahl für diese Anforderungen ist :)


Aber ja, der einzige Weg, eine PriorityQueue in korrekter Sortierung auszugeben, ist alle Elemente zu entfernen (und dabei dann notwendigerweise in eine neue Collection zu überführen). Das ist aber offensichtlich ziemlicher Unsinn, und eine andere Collection wäre für die Anforderungen deutlich bessre geeignet.
Was für eine Collection würdest du denn dafür nehmen ?
 

xImJugo

Aktives Mitglied
Also das mit der lokalen Variable lag doch schon hinter uns ... so hatte ich es doch verstanden...

Wichtig ist, dass du innerhalb eines Iterators keine Elemente löschen kannst ... also kein for each um dann ein Element zu löschen. Da dann entweder iterator() nutzen und dann auf dem Iterator remove() aufrufen um das aktuelle Element zu löschen (optionale Operation, kann ggf. Nicht unterstützt sein) oder du füllst beim durchgehen eine Liste mit zu löschenden Elemente um dann ein removeAll zu machen oder durch die temporäre Liste zu internieren um dann alle Elemente zu löschen ... das um mal zwei Möglichkeiten zu nennen ...

Ich hab gerade die Option mit dem löschen und füllem einer neuen Liste versucht, aber es scheiter wieder an der gleichen Exception wie vorher :
Code:
// habs in die Richtung versucht, aber i guess das ist auch nicht wie es sein sollte
public void print() {
        for (Song s : queue) {
             s = queue.poll();
             newQueue.add(s);
        }
        for ( int i =0; i < newQueue.size(); i++) {
            Terminal.printLine(newQueue.get(i));
        }
    }

Edit : Ich hab das jetzt, aber finde meine Lösung schon dumm. Wieso wird mir eine Priorityqueue empfohlen nur damit ich alles in eine ArrayListe kopiere und dann mit dieser Arbeite ?

Code:
public void print() {
        while (queue.size() != 0) {
            newQueue.add(queue.poll());
        }
        for (int i = 0; i < newQueue.size(); i++) {
            Terminal.printLine(newQueue.get(i));
        }

    }
 
Zuletzt bearbeitet:

mrBrown

Super-Moderator
Mitarbeiter
Was für eine Collection würdest du denn dafür nehmen ?
LinkedList oder TreeSet

Ich hab gerade die Option mit dem löschen und füllem einer neuen Liste versucht, aber es scheiter wieder an der gleichen Exception wie vorher :
Code:
// habs in die Richtung versucht, aber i guess das ist auch nicht wie es sein sollte
public void print() {
        for (Song s : queue) {
             s = queue.poll();
             newQueue.add(s);
        }
        for ( int i =0; i < newQueue.size(); i++) {
            Terminal.printLine(newQueue.get(i));
        }
    }
Versuch mal zu erklären, was die erste Schleife macht.
 
K

kneitzel

Gast
Also bei einer einfachen Ausgabe veränderst du doch die Queue nicht. Da läuft also generell etwas falsch. Da scheint die Ausgabe mehr zu machen, als es sollte.
 

mrBrown

Super-Moderator
Mitarbeiter

xImJugo

Aktives Mitglied
Jetzt klappt zwar die print Methode, aber wie muss ich meine add Methode überarbeiten ? Ich hab das nur zum testen so :
Code:
public void addSong(Song song) {

        queue.add(song);

    }
    
    // Das garantiert mir, dass die Song in die richtige Reihenfolge kommen

Aber wie kann ich hier auf die Songs in der Queue zugreifen ? Ich möchte nämlich, die Attribute von den vorhandenen Songs mit dem neuen Song vergleichen und je nach dem handeln
 

xImJugo

Aktives Mitglied
Vorher war es eine for-each in der gepollt wurde ;)


Kannst du erklären warum du dort zwei Schleifen nutzt?
In der while Schleife werden die obersten Elemente aus der Priorityqueue genommen und gelöscht bzw umkopiert in die ArrayList. In der 2. Schleife wird dann durch die ArrayListe iteriert und geprintet?

Edit : Ahso ich kann auch direkt das gepollte Element printen ohne extra durch die ArrayListe zu gehen

Code:
while (queue.size() != 0) {
            Song s = queue.poll();
            newQueue.add(s);
            Terminal.printLine(s);
        }
 

mrBrown

Super-Moderator
Mitarbeiter
In der while Schleife werden die obersten Elemente aus der Priorityqueue genommen und gelöscht bzw umkopiert in die ArrayList. In der 2. Schleife wird dann durch die ArrayListe iteriert und geprintet?
Löschen und in eine neue Collection überführen ist nur sinnvoll, wenn du zwei PriorityQueues nutzt oder die ArrayList nur temporär erzeugst und direkt danach wieder die PQ füllst.

Wenn du sowieso eine ArrayList als Feld hast, kannst du auch einfach ganz auf die PQ verzichten.


Dein Objekt braucht immer genau eine Collection, die die zu spielenden Lieder enthält, und aus der du sie sortiert abfragen kannst.
Entweder PQ => musst nicht selbst sortieren, musst nur Umwege zum Ausgaben gehen
Oder ArrayList/LinkedList => musst selbst sortieren, wenn sich die Liste ändern, Ausgeben ist aber trivial
Oder TreeSet => musst nicht selbst sortieren, Ausgeben ist auch trivial
 

xImJugo

Aktives Mitglied
Löschen und in eine neue Collection überführen ist nur sinnvoll, wenn du zwei PriorityQueues nutzt oder die ArrayList nur temporär erzeugst und direkt danach wieder die PQ füllst.

Wenn du sowieso eine ArrayList als Feld hast, kannst du auch einfach ganz auf die PQ verzichten.
Mir kam gerade auch der Gedanke, dass der list Befehl ja durch meine Implementierung alles zerstören wird, aber ja ich hab die Arrayliste als lokales Feld angelegt. Ich fülle diese und geb diese aus. Im Anschluss kommt dann doch die 2. Schleife, mit der ich die alte (leere) PQ wieder etnsprechend fülle

Dein Objekt braucht immer genau eine Collection, die die zu spielenden Lieder enthält, und aus der du sie sortiert abfragen kannst.
Entweder PQ => musst nicht selbst sortieren, musst nur Umwege zum Ausgaben gehen
Oder ArrayList/LinkedList => musst selbst sortieren, wenn sich die Liste ändern, Ausgeben ist aber trivial
Oder TreeSet => musst nicht selbst sortieren, Ausgeben ist auch trivial
Tatsächlich klingen deine 2 letzteren Optionen besser als diese kack PQ, aber wie gesagt, ich glaub ich bin gezwungen diese zu benutzen, aber ich danke dir sehr
 

xImJugo

Aktives Mitglied
Kannst du in Worten beschreiben, was du eigentlich machen willst?
Bei der Add methode wird ein Song der PQ hinzugefügt, sofern dieser Song die Bedingungen erfüllt. Gleiche Songs, also Songs mit der gleichen Kennung/ID müssen auch die gleichen Attribute haben. wenn das nicht vorliegt, so darf der Song auch nicht hinzugefügt werden. Die Kennung darf sich aber nach entfernen des Songs ändern. Also ein gleiches Lied kann durchaus öfter hinzugefügt werden. Das ist zunächst das wichtige.

Falls ich das habe, muss ich auch noch das : " Ein neues Lied wird nach allen bereits gestarteten Liedern hinzugefügt. Folglich wird durch das Hinzufügen eines Liedes mit einer höheren Priorität bereits laufende Lieder nicht unterbrochen, sondern dieses neue Lied dahinter eingereiht" beachten
 

xImJugo

Aktives Mitglied
Es kann doch jetzt nicht sein, dass ich bei add und remove auch wieder alles rumkopieren muss oder? Oder sollte ich die toArray methode nutzen? Wie nutzt man die überhaupt ?

Edit: Immernoch keine Ahnung wie die toArray methode funktioniert, aber die kann es auch nicht sein, da sie die Reihenfolge nicht speichert. Da müsste ich zusätzlich noch das erstellte Array sortieren, aber das sprengt den Rahmen wieder. Heißt also, dass ich wieder eine lokale ArrayListe benutzen muss ? Wenn ja find ich das alles sehr dumm oder ich übersehe was ?
 

mrBrown

Super-Moderator
Mitarbeiter
Naja, PriorityQueue ist für die Anforderungen einfach eine sehr schlechte Wahl, das macht dann einfach besonders viel Arbeit.

Du hast das im Ausgangspost als "Modellierungsaufgabe" bezeichnet - wie sieht denn deine Modellierung aus? Die Implementierung der konkreten Methoden ist erstmal egal, die ist einfach wenn der Rest passend ist.
 

xImJugo

Aktives Mitglied
Naja, PriorityQueue ist für die Anforderungen einfach eine sehr schlechte Wahl, das macht dann einfach besonders viel Arbeit.

Du hast das im Ausgangspost als "Modellierungsaufgabe" bezeichnet - wie sieht denn deine Modellierung aus? Die Implementierung der konkreten Methoden ist erstmal egal, die ist einfach wenn der Rest passend ist.

Also meine Modellierung besteht aus einer Song Klasse und der MusicPlayer Klasse. Ersteres besitzt die Attribute ID, Sänger, Titel, Länge und Priorität entsprechend mit Konstruktor und gettern/settern sowie paar Hilfsmethode wie um zu prüfen, ob eine Songlänge 0 ist bzw auch eine Methode zum simulieren eines Abspielens

Die Musicplayer Klasse hingegen hat eben die PQ als Datenstruktur und arbeitet eben mit den Songs. Hier kommen dann die ganzen Befehle hin ?

Passt das so ? Später kommt noch eine Main Klasse
 

xImJugo

Aktives Mitglied
Wie stellst du denn zB den aktuellen Song und alle bisher gespielten dar?

Also ich hab allgemein eine to String Methode in Song, die in den meisten Fällen es tut, aber bei der play Methode brauche ich eine Erweiterung davon, da ich da noch zusätzlich die übrige zeit ausgeben muss. Kann es sein, dass ich noch ein Attribut in der Song Klasse brauche, die die restliche Zeit eines Songs angibt ?

Und was meinst du mit dem letzteren ? Meinst du eine Möglichkeit für die History methode oder etwas anderes ? Wenn ja, dann dachte ich einfach wenn die play Methode klappt ein Song einfach in eine neue PQ gespeichert wird, nachdem er abgespielt wurde also die Länge des Songs gleich 0 ist.
 

mrBrown

Super-Moderator
Mitarbeiter
"Darstellen" meinte nicht, wie du das dem Nutzer anzeigst, sondern wie das modelliert ist :)

Ist der aktuelle Song zb einfach der, der grad "vorne" steht? Oder gibt es ein Feld "Song aktuellerSong"? Oder irgendwas anderes?


Und was meinst du mit dem letzteren ?
Die history-Methode soll ja alle bisher gespielten Songs ausgeben, du musst ja dann irgendwo merken, welche das sind, und vermutlich sollten die auch in der Reihenfolge des Abspielens gespeichert sein?

Wie du die Methode implementierst ist erstmal egal, wichtiger ist erstmal wie du das modellierst. Und wenn du dabei auf eine Klasse verweist (zB PriorityQueue), solltest du begründen können, warum grad die :)
 

xImJugo

Aktives Mitglied
"Darstellen" meinte nicht, wie du das dem Nutzer anzeigst, sondern wie das modelliert ist :)

Ist der aktuelle Song zb einfach der, der grad "vorne" steht? Oder gibt es ein Feld "Song aktuellerSong"? Oder irgendwas anderes?



Die history-Methode soll ja alle bisher gespielten Songs ausgeben, du musst ja dann irgendwo merken, welche das sind, und vermutlich sollten die auch in der Reihenfolge des Abspielens gespeichert sein?

Wie du die Methode implementierst ist erstmal egal, wichtiger ist erstmal wie du das modellierst. Und wenn du dabei auf eine Klasse verweist (zB PriorityQueue), solltest du begründen können, warum grad die :)

Ja der aktuelle Song ist der oberste Song der PQ , also der mit der höchsten Priorität und wenn der gespielt wurde muss er aus der aktuellen PQ bzw Warteschlange entfernt werden und wie du sagst irgendwo gespeichert werden. Also das hängt ja auf jeden Fall mit der play Methode zusammen. Wenn damit nämlich ein Song durch ist, muss dieser entfernt werden und gespeichert werden, und da dachte ich benutzte eine neue bzw 2. PQ, da wenn der aktuelle Song vorher schon die Höchste priorität hatte, wird er ja diese auch in der History PQ behalten und somit an seiner richtigen Stelle stehen oder ?
 

mrBrown

Super-Moderator
Mitarbeiter
Angenommen, beides sind PriorityQueues (und der Einfachheit halber, Song-X heißt ein Song mit Priorität X):

Anfangszustand:
- zu Spielen: [Song-5]
- History: []

Play wird gedrückt, Song-5 wird also gespielt.
- zu Spielen: [Song-5]
- History: []

Song-1 wird hinzugefügt, Song-5 läuft noch:
- zu Spielen: [Song-5, Song-1]
- History: []

Song-10 wird hinzugefügt, Song-5 läuft immer noch:
- zu Spielen: [Song-5, Song-10, Song-1] <- erstes problem, die PriorityQueue darf plötzlich nicht mehr nach Priorität sortiert sein
- History: []

Song-5 vorbei, Song-10 startet:
- zu Spielen: [Song-10, Song-1]
- History: [Song-5]

Song-5 vorbei, Song-1 startet:
- zu Spielen: [Song-1]
- History: [Song-10, Song-5] <- zweites Problem, die Liste ist genau falschrum

Song-1 vorbei
- zu Spielen: [Song-1]
- History: [Song-10, Song-5, Song-1] <- zweites Problem noch größer, Liste ist nicht nur falschrum, sondern völlig unsortiert
 

xImJugo

Aktives Mitglied
Angenommen, beides sind PriorityQueues (und der Einfachheit halber, Song-X heißt ein Song mit Priorität X):

Anfangszustand:
- zu Spielen: [Song-5]
- History: []

Play wird gedrückt, Song-5 wird also gespielt.
- zu Spielen: [Song-5]
- History: []

Song-1 wird hinzugefügt, Song-5 läuft noch:
- zu Spielen: [Song-5, Song-1]
- History: []

Song-10 wird hinzugefügt, Song-5 läuft immer noch:
- zu Spielen: [Song-5, Song-10, Song-1] <- erstes problem, die PriorityQueue darf plötzlich nicht mehr nach Priorität sortiert sein
- History: []

Song-5 vorbei, Song-10 startet:
- zu Spielen: [Song-10, Song-1]
- History: [Song-5]

Song-5 vorbei, Song-1 startet:
- zu Spielen: [Song-1]
- History: [Song-10, Song-5] <- zweites Problem, die Liste ist genau falschrum

Song-1 vorbei
- zu Spielen: [Song-1]
- History: [Song-10, Song-5, Song-1] <- zweites Problem noch größer, Liste ist nicht nur falschrum, sondern völlig unsortiert

Ohje daran hab ich echt nicht gedacht, also bietet sich die PQ nicht an für die History. Hast du schon eine Datenstruktur im Kopf, welche sich eignen würde, weil ich wäre vermutlich wieder bei normalen Listen, so dass man einfach mit einer Arrayliste wieder arbeitet. Das erste List welches durch play abgearbeitet wird, kriegt Platz 0 in der Liste, das nächste dann 1 etc und so kann man dann easy die arrayliste am Ende printen ?

Aber wieso reden wir davon jetzt schon, wo ich noch nicht mal die play und add methode habe?
 

mrBrown

Super-Moderator
Mitarbeiter
Ohje daran hab ich echt nicht gedacht, also bietet sich die PQ nicht an für die History.
Nur das zweite Problem betrifft die History :)

Hast du schon eine Datenstruktur im Kopf, welche sich eignen würde, weil ich wäre vermutlich wieder bei normalen Listen, so dass man einfach mit einer Arrayliste wieder arbeitet. Das erste List welches durch play abgearbeitet wird, kriegt Platz 0 in der Liste, das nächste dann 1 etc und so kann man dann easy die arrayliste am Ende printen ?
Listen sind dafür sinnvoll :)

Aber wieso reden wir davon jetzt schon, wo ich noch nicht mal die play und add methode habe?

Architekten überlegen sich auch, wie das Haus aussehen soll, bevor ein Elektriker die Lampen anbringt :)
 

xImJugo

Aktives Mitglied
Nur das zweite Problem betrifft die History :)


Listen sind dafür sinnvoll :)

Ja okey also eine Arrayliste tuts oder sollte ich doch auf eine andere setzen ?

Architekten überlegen sich auch, wie das Haus aussehen soll, bevor ein Elektriker die Lampen anbringt :)
okey gutes Argument. Du hast mich zerstört xD

Edit: Fall das mit der Modellierung passt, wäre ich sehr dankbar über Hilfe was die add und play Methode angeht. Ich kann auch meinen bisherigen Code oder Code schnipsel posten, falls erwünscht
 
Zuletzt bearbeitet:

xImJugo

Aktives Mitglied
Muss ich jetzt eigentlich, sofern ich bei meiner Wiedergabeliste bei PQ bleibe echt jedes Mal umkopieren ? Also bis auf bei add, hab ich Stand jetzt fast jedes Mal das Kopieren der Elemente von PQ zu lokaler ArrayList und nachdem der Befehl vorbei ist, das zurückkopieren in die PQ. Geht das schöner oder muss ich das so machen ?

Und wie gesagt ich bräuchte dringend Hilfe bei der play Umsetzung. Ich hab paar Sachen probiert, aber mir fehlt noch das etwas. Wäre sehr dankbar über Hilfe /:
 

mrBrown

Super-Moderator
Mitarbeiter
Ja okey also eine Arrayliste tuts oder sollte ich doch auf eine andere setzen ?
Für die History ja - das erste Problem bleibt dabei aber trotzdem bestehen.

Muss ich jetzt eigentlich, sofern ich bei meiner Wiedergabeliste bei PQ bleibe echt jedes Mal umkopieren ?
Ja. Wie gesagt, PQ ist eine schlechte Wahl dafür.

Also bis auf bei add, hab ich Stand jetzt fast jedes Mal das Kopieren der Elemente von PQ zu lokaler ArrayList und nachdem der Befehl vorbei ist, das zurückkopieren in die PQ. Geht das schöner oder muss ich das so machen ?
Das umkopieren brauchst du nur, wenn du in korrekter Reihenfolge iterieren musst.

add wird aber noch andere Probleme machen.


Und wie gesagt ich bräuchte dringend Hilfe bei der play Umsetzung.
play klingt eigentlich am einfachsten, was für Probleme hast du dabei denn?
 

xImJugo

Aktives Mitglied
Für die History ja - das erste Problem bleibt dabei aber trotzdem bestehen.


Ja. Wie gesagt, PQ ist eine schlechte Wahl dafür.
Ja hab den Aufgabenstellern auch mal geschrieben deswegen, aber naja, wenn die auf diese kack PQ bestehen, dann muss ich das wohl so machen, wie ich es mache. Aber ich glaube es geht trotzdem schöner. Hab jetzt oft das Copy Paste benutzt, aber könnte man das ständige hin und her kopieren nicht in einer privaten HilfsMethode zusammenfassen, die das jedes Mal übernimmt? Weil sich wiederholende Code ist ja schlecht

Das umkopieren brauchst du nur, wenn du in korrekter Reihenfolge iterieren musst.

add wird aber noch andere Probleme machen.
Welche denn ? Ich glaube ich hab die add Methode schon weit. Mir fehlt nur der Part, dass laufende Lieder nicht unterbrochen werden dürfen, sondern hinten angereiht, aber hier hab ich ja mein play Problem /:

play klingt eigentlich am einfachsten, was für Probleme hast du dabei denn?
Also ich find die komisch und krieg es nicht hin das zu Simulieren. Was brauch ich denn dafür alles ? Ich hab nämlich dafür der SongKlasse ein weiteres Attribut (Restzeit) gegeben, dass speichern soll, wie viel von der Länge übrig geblieben ist.
Dazu hab ich dann auch eine Methode die prüft, ob die Restzeit 0 ist und eine methode, die was von der Zeit abzieht :

Code:
public void play(int time) {
        this.restTime = this.length - time;
    }

und eine Methode, die die Restzeit auf die Länge des Lieds setzt, da ja am Anfang diese beiden Zahlen übereinstimmen müssen (ist auch im Konstruktor so initialisiert), aber wie setzte ich das in der anderen Klasse um, dass ein Lied so lange läuft bis das 1. Lied 0 ist, das wird in die ArrayListe gepackt und aus der PQ gelöscht. Falls die angegebene Zeit noch nicht fertig ist, soll das nächste Lied automatisch laufen ?

Code:
// play fehlt oder entspricht noch nicht den Anforderungen
    public void play(int length) {
        // Umkopieren der Elemente von PQ zu AL
        ArrayList<Song> newQueue = new ArrayList<Song>();
        while (queue.size() != 0) {
            Song s = queue.poll();
            newQueue.add(s);
        }
        // Simulieren ?
        for (int i = 0; i < newQueue.size(); i++) {
            newQueue.get(i).play(length);
            if (newQueue.get(i).getRestTime() <= 0) {
                Song s = newQueue.remove(i);
                historyOfQueue.add(s);
            }
        }
    }

Und wieso sollte play einfacher sein als skip ? Dieser ist 3 zeilen bei mir lang xD oder stimmt hieran was nicht :

Code:
public void skip() {
        if (queue.size() != 0) {
            queue.poll();
        }
    }
 

mrBrown

Super-Moderator
Mitarbeiter
Aber ich glaube es geht trotzdem schöner. Hab jetzt oft das Copy Paste benutzt, aber könnte man das ständige hin und her kopieren nicht in einer privaten HilfsMethode zusammenfassen, die das jedes Mal übernimmt? Weil sich wiederholende Code ist ja schlecht
Wieso ständig? Du brauchst das nur ein einer einzelnen Stelle, da wo die Liste ausgegeben wird.
Für alle anderen Methoden ist die Reihenfolge egal.



Mir fehlt nur der Part, dass laufende Lieder nicht unterbrochen werden dürfen, sondern hinten angereiht, aber hier hab ich ja mein play Problem /:
Play ist dafür doch völlig egal?
Was brauch ich denn dafür alles ? Ich hab nämlich dafür der SongKlasse ein weiteres Attribut (Restzeit) gegeben, dass speichern soll, wie viel von der Länge übrig geblieben ist.
die Restzeit brauchst du nicht im Song speichern - es hat ja nicht jeder einzelne Song eine Restzeit, sondern nur der aktuelle. Kann je nach Umsetzung einfacher sein.

aber wie setzte ich das in der anderen Klasse um, dass ein Lied so lange läuft bis das 1. Lied 0 ist, das wird in die ArrayListe gepackt und aus der PQ gelöscht. Falls die angegebene Zeit noch nicht fertig ist, soll das nächste Lied automatisch laufen ?
Wenn mehr Zeit gespielt werden soll, als in aktuellem Lied übrig (kannst du prüfen), dann musst du berechnen, wie viel Zeit nach dem aktuellen Lied noch gespielt werden musst, das nächste Lied aus der Liste holen, und die Zeit davon abziehen.
Einfach mal auf Papier durchspielen.



Und wieso sollte play einfacher sein als skip ? Dieser ist 3 zeilen bei mir lang xD oder stimmt hieran was nicht :
Na gut, Play ist nicht am einfachsten :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Rekursions Probleme / frage Java Basics - Anfänger-Themen 4
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
C Probleme mit Byte konvertieren nach int Java Basics - Anfänger-Themen 10
P Probleme mit NetBeans: Wie lässt sich jar. Datei an einem MacBook öffnen Java Basics - Anfänger-Themen 21
I Projekte in IDE untereinander sharen / Probleme beim Build Java Basics - Anfänger-Themen 8
MiMa Probleme mit Datentyp long ?? Java Basics - Anfänger-Themen 2
T Probleme beim Import eines Git-Repos Java Basics - Anfänger-Themen 2
Jxhnny.lpz TicTacToe Spiel vs Computer. (Probleme) Java Basics - Anfänger-Themen 7
B Quiz mit RMI Probleme mit RMI start Java Basics - Anfänger-Themen 4
httprt Probleme bei dem erstellen von leveln in meinem Spiel Java Basics - Anfänger-Themen 2
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
V Probleme Guessing Game Java Basics - Anfänger-Themen 8
hebein PDF Ausdruck auf Drucker - Probleme mit Format Java Basics - Anfänger-Themen 17
R JMenu/JMenuItem Probleme Java Basics - Anfänger-Themen 2
B Static vs non static und Probleme daraus Java Basics - Anfänger-Themen 13
J Probleme mit dem Debugger Java Basics - Anfänger-Themen 4
I Probleme mit OutputStream - Datei lässt sich nicht öffnen Java Basics - Anfänger-Themen 4
J Probleme mit Kompilierung Java Basics - Anfänger-Themen 11
B Probleme mit Zugriff auf Dateisystem Windows 10 ( jFileChooser) Java Basics - Anfänger-Themen 17
W Objekte über Scanner Input; ToString Probleme... Java Basics - Anfänger-Themen 4
C Probleme mit paintComponent Java Basics - Anfänger-Themen 13
P Probleme mit JUnit-Tests, es kommt was anderes raus als bei manuellen Tests Java Basics - Anfänger-Themen 5
E JavaFX Editor Probleme mit der Zwischenablage Java Basics - Anfänger-Themen 12
C Probleme mit dem Erstellen und Importieren von Packages Java Basics - Anfänger-Themen 6
3 OOP erste Versuche, OOP zu verstehen. Probleme mit gettern und settern Java Basics - Anfänger-Themen 4
R Erste Schritte Probleme bei 2D Spielfeld, mit einzufügender "Person" Java Basics - Anfänger-Themen 5
P Probleme bei der Installation von JavaFX Java Basics - Anfänger-Themen 3
S Mehrere Probleme im Code Java Basics - Anfänger-Themen 7
D Probleme mit JFrame und der Größe Java Basics - Anfänger-Themen 8
Dimax String Probleme Java Basics - Anfänger-Themen 12
N Probleme beim printen von Arrays durch for Schleife Java Basics - Anfänger-Themen 3
Splayfer Java Array Probleme Java Basics - Anfänger-Themen 3
J Probleme bei IllegalArgumentException "werfen". Java Basics - Anfänger-Themen 1
K Probleme bei der Ausgabe - komme nicht weiter :/ Java Basics - Anfänger-Themen 15
D Probleme mit dem Windowbuilder und JComboBox Java Basics - Anfänger-Themen 2
M Regex Probleme (mal wieder) Java Basics - Anfänger-Themen 3
tom.j85 TicTacToe - probleme beim Casten Java Basics - Anfänger-Themen 6
J Probleme mit Vererbung Java Basics - Anfänger-Themen 4
X Probleme mit Übungsaufgaben zu Zahlentypen Java Basics - Anfänger-Themen 4
G Probleme bei Aufgabe Java Basics - Anfänger-Themen 12
P Erste Schritte Probleme mit dem Programmieren Java Basics - Anfänger-Themen 12
B Probleme bei einer Aufgabe Java Basics - Anfänger-Themen 19
Franzi1001 Probleme mit Eclipse Java Basics - Anfänger-Themen 7
T Probleme bei Installation von JDK Java Basics - Anfänger-Themen 2
C Probleme mit String-Vergleich Java Basics - Anfänger-Themen 4
C Probleme bei Regex Java Basics - Anfänger-Themen 9
V Probleme mit Arrays Java Basics - Anfänger-Themen 8
D Kleine Probleme mit Split-Befehlen Java Basics - Anfänger-Themen 5
T Probleme mit Strings Java Basics - Anfänger-Themen 6
G Probleme bei Frame aufgaben Java Basics - Anfänger-Themen 6
N Probleme mit dem ActionListener Java Basics - Anfänger-Themen 4
D Probleme beim Kompelieren mache ich etwas falsch ? Java Basics - Anfänger-Themen 3
L Probleme mit Java Java Basics - Anfänger-Themen 3
S Probleme mit abspielen einer .wav Datei Java Basics - Anfänger-Themen 2
J Probleme bei der Umwandlung einer Farbe von Hex zu RGB Java Basics - Anfänger-Themen 8
K Probleme beim Programm schreiben - Lesen von Dateiinhalten -zaehlen von Wörtern/ Buchstaben Java Basics - Anfänger-Themen 4
M Probleme beim aktualisieren eines JPanels Java Basics - Anfänger-Themen 7
J Probleme beim Array ausgeben Java Basics - Anfänger-Themen 4
M Probleme bei rekursiver Zuordnung Java Basics - Anfänger-Themen 1
I Probleme mit 2 dimensionale Arrays Java Basics - Anfänger-Themen 3
H Best Practice View probleme Java Basics - Anfänger-Themen 2
B Probleme mit Kreisberechnung Java Basics - Anfänger-Themen 15
E Probleme mit Scanner Java Basics - Anfänger-Themen 4
J Eclipse Export Probleme Java Basics - Anfänger-Themen 25
M Probleme beim verwenden von Packages Java Basics - Anfänger-Themen 6
D Probleme mit der Übergabe einer BorderPane Java Basics - Anfänger-Themen 2
J Interface Probleme bei der Implementierung Java Basics - Anfänger-Themen 1
BlueFox Tabelle in der Konsole ausgeben - Probleme Java Basics - Anfänger-Themen 1
G Methoden Probleme beim Methodenaufruf Java Basics - Anfänger-Themen 2
V Klassen ObjectInputStream ->ReadObject Probleme Java Basics - Anfänger-Themen 5
P Probleme mit der Do-Schleife Java Basics - Anfänger-Themen 2
F Erste Schritte Compiling Probleme Java Basics - Anfänger-Themen 13
S Neuling und Probleme bei Schulaufgabe Java Basics - Anfänger-Themen 5
J Anfänger: ActionListener und ProcessBuilder machen Probleme Java Basics - Anfänger-Themen 6
S Erste Schritte 2D Grafik Probleme mit KeyListener. Java Basics - Anfänger-Themen 18
M Array mit eigenem Datentyp probleme beim übergeben Java Basics - Anfänger-Themen 6
M Probleme mit Eclipse Java Basics - Anfänger-Themen 20
G Probleme beim casten von double zu int Java Basics - Anfänger-Themen 3
E 2 Probleme - Datum & private finale Variablen Java Basics - Anfänger-Themen 5
S Compiler-Fehler javac hat Probleme mit Paketen unter OSX Java Basics - Anfänger-Themen 2
J Probleme beim schreiben von Dateien Java Basics - Anfänger-Themen 5
B Variablen Probleme mit Eclipse Java Basics - Anfänger-Themen 6
H Mouse- und KeyListener Probleme? Java Basics - Anfänger-Themen 5
A Probleme beim zykl. aktulisieren von Daten in JTable Java Basics - Anfänger-Themen 3
I Probleme bei Verzeichnissanalyse Java Basics - Anfänger-Themen 12
F Probleme mit privaten Klassen (abstrakten Klassen) Java Basics - Anfänger-Themen 1
H Probleme mit Klassen...oder: Eine Uhr Java Basics - Anfänger-Themen 9
G Probleme mit Konsole Java Basics - Anfänger-Themen 4
S Probleme mit GamGrid Spiel-Erstellung => Actor reagiert nicht auf Tastatur Java Basics - Anfänger-Themen 2
G Probleme mit Eclipse oder der URL Klasse Java Basics - Anfänger-Themen 5
W Verständnis Probleme bei der while-Schleife und continue Java Basics - Anfänger-Themen 21
M Probleme mit Anzeigen von String in GUI und if-Anweisung Java Basics - Anfänger-Themen 9
T Konstruktor Probleme Java Basics - Anfänger-Themen 3
W Methoden Probleme mit der Scanner Methode Java Basics - Anfänger-Themen 2
F Ja Nein Abfrage und andere Probleme Java Basics - Anfänger-Themen 5
L If Anweisung mit ArrayList Probleme Java Basics - Anfänger-Themen 6
littles_de Simbad Simulator probleme mit Sensordaten... Java Basics - Anfänger-Themen 0
M Erste Schritte Probleme beim Verknüpfen von Methoden Java Basics - Anfänger-Themen 15
A Probleme beim Methodenaufruf von Object[] ! Java Basics - Anfänger-Themen 12
A Probleme beim Methodenaufruf von char[] ! Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben