Methoden "Unschöne" Break-Anweisung aus verschachtelter Funktion entfernen

Diskutiere "Unschöne" Break-Anweisung aus verschachtelter Funktion entfernen im Allgemeine Java-Themen Forum; Hallo zusammen, aus dem nachfolgendem Codestück möchte ich die Break-Anweisung entfernen, um ein besseren Quellcode zu haben. for (int...

  1. sapcandy
    sapcandy Neues Mitglied
    Hallo zusammen,

    aus dem nachfolgendem Codestück möchte ich die Break-Anweisung entfernen, um ein besseren Quellcode zu haben.

    Code (Java):
    for (int aktuelleLadung : loadList.beladung) {
                for (Container aktuellerContainer : container) {
                    if (aktuellerContainer.freierPlatzFuer(aktuelleLadung)) {
                        aktuellerContainer.speicherLadung(aktuelleLadung);
                        break;
                    }
                }
            }
    Es handelt sich hierbei um einen Algorithmus für das "bin-packing". Entferne ich das Break, wird jeder Container immer wieder mit den gleichen Paketen gefüllt. Leider haben meine bisherigen Versuche nicht zum gewünschten Erfolg geführt.
     
  2. Vielleicht hilft dir dieser Kurs hier weiter --> (hier klicken)
  3. Sogomn
    Sogomn Mitglied
    Nach welchem Schema sollen die Container denn gefüllt werden? Soll die Ladung gleich verteilt werden oder jeweils so viel wie möglich auf einen einzelnen Container?
     
  4. JStein52
    JStein52 Bekanntes Mitglied
    Warum ist der dann besser ?
     
  5. Kababär
    Kababär Aktives Mitglied
    Meiner Meinung nach ist es besser, wenn ein break drin steht (falls benötigt).
    Beispielsweise du hast eine Liste mit int-Werten.
    Jetzt suchst du eine spezielle Zahl. Angenommen die Liste hat 10.000 Elemente und die gesuchte Zahl steht an 4. Stelle. Mit einem break läufst du jetzt bis zum 4. Element, ohne Break läuft er komplett durch.

    An deiner Stelle wird ja nur die innere Schleife abgebrochen, was Sinn macht.
    Ich denke allerdings, dass du die 2 For-Schleifen tauschen müsstest, oder?
    Angenommen du hast 3 leere Container, in die jeweils die Zahl 100 reinpasst. Dann befüllst du alle 3 Container mit 100. Aber eine Ladung kann doch nur in einen Container, oder?
     
  6. JStein52
    JStein52 Bekanntes Mitglied
    Du hast eine Ladeliste deren Ladungen du auf Container verteilen musst. Und du hast eine Reihe von Containern auf die du die Ladungen verteilen musst. Wenn du einen passenden Container gefunden hast dann musst du diese Schleife beenden und mit der nächsten Ladung weitermachen. Warum willst du jetzt Verrenkungen machen um den Code den du jetzt hast kryptischer zu machen um ein break wegzukriegen ?
     
  7. sapcandy
    sapcandy Neues Mitglied
    Es wird sowohl First-Fit, also auch First-Fit-Decreasing benutzt.

    Gewohnt aus meiner Prog-Anfangszeit, wurde damals nicht gerne gesehen. (Gab auch massiven Punktabzug)

    Verwende ich break im Algorithmus, läuft mein Programm wie gewünscht (kann den Quellcode gerne per PM teilen). Eine Ladung kann logischerweise, wie du sagtest, nur einmal verladen werden. Entferne ich break, werden die Ladungen in den Container zwar geladen, stehen allerdings dann wieder für die anderen Container zur Verfügung.

    Vielen Dank für die Diskussion.
     
  8. Sogomn
    Sogomn Mitglied
    Du könntest Alternativ, statt die Container innerhalb der Ladung zu iterieren, die Ladung innerhalb der Container durchlaufen. Also der Reihe nach die Container befüllen, bis sie voll sind.

    Edit: Das würde es nur noch schwieriger machen, ich hab' Mist erzählt.
     
  9. JStein52
    JStein52 Bekanntes Mitglied
    Ist eine ganz normale Anweisung in Java und dient zum vorzeitigen Verlassen einer Schleife. Da ist nichts schlimmes dabei (solange man sie nicht total unübersichtlich einsetzt) und über einen Punktabzug würde ich mich dabei beschweren !
     
  10. JStein52
    JStein52 Bekanntes Mitglied
    Würde auch nicht ganz der Aufgabe entsprechen die lautet, alle Ladungen der Reihe nach auf die Container zu verteilen, und zwar jede Ladung auf den nächsten Container der noch genug Platz hat.
     
  11. mrBrown
    mrBrown Bekanntes Mitglied
    Oder einfach das Suchen des passenden Containers in eine eigene Funktion auslagern, dann erübrigt sich die innere Schleife und es bleiben nur zwei Methodenaufrufe.
     
Die Seite wird geladen...

"Unschöne" Break-Anweisung aus verschachtelter Funktion entfernen - Ähnliche Themen

Asteroid unschöne Bewegung
Asteroid unschöne Bewegung im Forum Spiele- und Multimedia-Programmierung
"unschöne" if-Abfragen
"unschöne" if-Abfragen im Forum Java Basics - Anfänger-Themen
Unschöne Html Fehlermeldung bei Eclipse
Unschöne Html Fehlermeldung bei Eclipse im Forum Java Basics - Anfänger-Themen
Break-Anweisung bei if-else
Break-Anweisung bei if-else im Forum Java Basics - Anfänger-Themen
break-anweisung
break-anweisung im Forum Hausaufgaben
Thema: "Unschöne" Break-Anweisung aus verschachtelter Funktion entfernen