Modellierung, vererbung,

Noob1234_1234

Aktives Mitglied
Mit meinem Ansatz jedoch wird jedes mal ein neuer Stack erstellt, also selbst wenn man 2x eine 1 einsetzt für die stacknumber, dann entstehen quasi 2 Stapel, die 1 heißen und das ist ja nicht Sinn der Sache. Jeder neue Stack sollte eigentlich von 0 aufsteigend durchnummeriert sein (Ich hatte dafür eine Methode, aber auch hier wird die Nummer durch die Textdatei mitgegeben und das verwirrt mich). Irgendwer eine Idee für die Lösung dafür ?

und wie stelle ich sicher, dass bei gleicher Eingabe von Stacknumer nicht ein neuer Stack erstellt wird, sondern, dass der entsprechende Container nur auf den Stappel kommt ? oder ist das für das Modell egal? ich hätte eine Map oder Set gedacht zur Umsetzung
 

Noob1234_1234

Aktives Mitglied
Jetzt aber ?
Code:
public class Crane {

    private static final int MAXHEIGHT = 1920; // Zoll
    private static final int MAXLOADCAPACITY = 30000; // in kg
    private ContainerStack position; // aktuelle Position des Krans
    private Container containerLoad;

    public static int getMaxheight() {
        return MAXHEIGHT;
    }

    public static int getMaxloadcapacity() {
        return MAXLOADCAPACITY;
    }

    public void moveTo(ContainerStack stack) {
        position = stack;
    }

    public void pick() {
        if (MAXLOADCAPACITY >= containerLoad.getWeight()) {
            containerLoad = position.pick();
        }
    }

    public void place() {
        if (MAXHEIGHT >= (MAXHEIGHT - position.calculateContainerStackHeight())) {
            position.place(containerLoad);
        }
    }

}
 

mihe7

Top Contributor
Wir kommen der Sache näher aber Du machst es Dir zu einfach. Da fehlen noch einige Prüfungen. Überleg mal, was alles schief laufen könnte, wenn Du die einzelnen Methoden (in beliebiger Reihenfolge) aufrufst.
 

Noob1234_1234

Aktives Mitglied
Wir kommen der Sache näher aber Du machst es Dir zu einfach. Da fehlen noch einige Prüfungen. Überleg mal, was alles schief laufen könnte, wenn Du die einzelnen Methoden (in beliebiger Reihenfolge) aufrufst.

Eigentlich fehlt doch nur eine Überprüfung oder net ? In der Aufgabe steht, dass wenn der Stapel von vornherein zu groß ist, dann soll der Stapel gar nicht erst angehoben werden . Meinst du das ?

Edit : Und er kann immer nur ein Container tragen ?
 

Noob1234_1234

Aktives Mitglied
Das sollte die eine Sache klären oder ? Aber wie leg ich fest, dass der Kran nur ein Container immer tragen kann
Code:
 public void pick() {
        if (testHeight() == true) {
            if (MAXLOADCAPACITY >= containerLoad.getWeight()) {
                containerLoad = position.pick();
            }
        }
    }
    
    //
    
    public boolean testHeight() {
        if (MAXHEIGHT >= (MAXHEIGHT - position.calculateContainerStackHeight())) {
            position.place(containerLoad);
            return true;
        }
        return false;
    }
 

mihe7

Top Contributor
In der Aufgabe steht, dass wenn der Stapel von vornherein zu groß ist, dann soll der Stapel gar nicht erst angehoben werden . Meinst du das ?
Nein, das meine ich nicht. Du sollst nicht in die Aufgabe schauen, sondern selbst das Denken anfangen.

Du musst Dir den Spaß bildlich vorstellen. Nun kenne ich die Abbildung in der Aufgabe nicht, ich stelle mir daher einen Kran vor, der z. B. auf einer Schiene fahrbar ist und über einer Reihe von Containerstapeln steht.

Aber wie leg ich fest, dass der Kran nur ein Container immer tragen kann
Denken... Tipp: es hat mit der Ladung zu tun.
 

Noob1234_1234

Aktives Mitglied
Nein, das meine ich nicht. Du sollst nicht in die Aufgabe schauen, sondern selbst das Denken anfangen.

Du musst Dir den Spaß bildlich vorstellen. Nun kenne ich die Abbildung in der Aufgabe nicht, ich stelle mir daher einen Kran vor, der z. B. auf einer Schiene fahrbar ist und über einer Reihe von Containerstapeln steht.


Denken... Tipp: es hat mit der Ladung zu tun.

Code:
public void pick() {
        if (testHeight() == true) {
            if (MAXLOADCAPACITY >= containerLoad.getWeight()) {
                while (position.stack.size() < 1) {
                    containerLoad = position.pick();
                }
            }
        }
    }
Die Stackgröße darf nicht größer sein als 1 oder ? Also so wie hier
 

Noob1234_1234

Aktives Mitglied
Nein, das meine ich nicht. Du sollst nicht in die Aufgabe schauen, sondern selbst das Denken anfangen.

Du musst Dir den Spaß bildlich vorstellen. Nun kenne ich die Abbildung in der Aufgabe nicht, ich stelle mir daher einen Kran vor, der z. B. auf einer Schiene fahrbar ist und über einer Reihe von Containerstapeln steht.
Alles was nicht in der Aufgabe steht überleg ich mir erst, wenn ich die Aufgabe fertig habe xD, deswegen will ich erstmal das Terminal noch fertig machen (weil es da auch 3 Parts gibt, die mich endlos verwirren)

Denken... Tipp: es hat mit der Ladung zu tun.
[/QUOTE]
 

Noob1234_1234

Aktives Mitglied
Na ja, nehmen wir mal an, der Kran kann maximal 10m, der Stapel hat gerade 6m und der Container ist 2m hoch. Nach deiner Formel könnte der Kran das dann nicht machen, weil 10m - 6m >= 6m false ergibt.

Okey du hast recht und ich bin jetzt noch mehr verwirrt -.- ; kannst du mir das bitte in eine mathematische Formel übersetzen. Ich checks imemrnoch :

"Ein Kran besitzt eine maximale Hubhöhe. Das ist die Höhe, die ein theoretisch vollkommen flacher Gegenstand der Höhe 0 angehoben werden könnte. Die tatsächliche Hubhöhe muss um die Höhe des angehobenen Gegenstands vermindert werden. Beträgt die maximale Hubhöhe 80 Fuß, so ergibt sich für einen 10 Fuß hohen Container eine tatsächlich erreichbare Hubhöhe von 70 Fuß. Falls die tatsächlich erreichbare Hubhöhe geringer als die Höhe des Zielstapels ist, ist es dem Kran nicht möglich, den Container auf dem Zielstapel zu platzieren. Der Container wird in diesem Fall gar nicht erst vom Ursprungsstapel entnommen. Stellen Sie die maximale Hubhöhe des Krans unveränderlich auf 160 Fuß ein. "
Bin immernoch der Meinung, dass meine Formel stimmen muss, wobei du gerade ja gezeigt hast, dass es nicht sein kann
 

Noob1234_1234

Aktives Mitglied
Wieso im Container? Bzgl. des Containers habe ich nur die konkreten Klassen im Diagramm weggelassen.

Ahsooo ich dachte ich hab bei der Implementierung vergessen, aber eine Frage welche Klasse besitzt den Konstruktor ? Die allgemeine Container klasse oder die beiden erbenden oder haben alle einen ? Und kann man "40ft und 40ftHC" als enum darstellen bzw ist das sinnvoll ?
 

Noob1234_1234

Aktives Mitglied
Meine Terminalklasse sollte ja eigentlich keine Attribute besitzen außer den Kran und ggnf eine Datenstruktur zum Speichern der Stacks besitzen oder ?
Sonst hat sollte sie eine oder zwei Methoden bekommen? ( bin mir nicht sicher, ob eine Methode alle Paramter entgegennimmt oder nicht) Könnt ihr mir jetzt bitte verraten, wie ihr euch das mit den 2 Integern für den Transport vorgestellt habt ?
 

mihe7

Top Contributor
Alles was nicht in der Aufgabe steht überleg ich mir erst, wenn ich die Aufgabe fertig habe
Musst Du wissen.

aber eine Frage welche Klasse besitzt den Konstruktor ?
Jede Klasse besitzt einen Konstruktor.

Und kann man "40ft und 40ftHC" als enum darstellen bzw ist das sinnvoll ?
Wozu?

Meine Terminalklasse sollte ja eigentlich keine Attribute besitzen außer den Kran und ggnf eine Datenstruktur zum Speichern der Stacks besitzen oder ?
Das weiß ich noch nicht. Zum aktuellen Stand besitzt die Klasse eben die beiden Attribute.

Sonst hat sollte sie eine oder zwei Methoden bekommen? ( bin mir nicht sicher, ob eine Methode alle Paramter entgegennimmt oder nicht) Könnt ihr mir jetzt bitte verraten, wie ihr euch das mit den 2 Integern für den Transport vorgestellt habt ?
Du könntest dem ContainerTerminal eine Methode spendieren:
Java:
public void transportContainer(int originStackId, int destinationStackId)
 

Noob1234_1234

Aktives Mitglied
Musst Du wissen.


Jede Klasse besitzt einen Konstruktor.


Wozu?


Das weiß ich noch nicht. Zum aktuellen Stand besitzt die Klasse eben die beiden Attribute.


Du könntest dem ContainerTerminal eine Methode spendieren:
Java:
public void transportContainer(int originStackId, int destinationStackId)
Eben zum letzteren, soweit hatte ich sie auch schon, aber was passiert mit den 2 mitgegebenen integern? Das war ja schon heute morgen und gestern mein größtes Problem. Ich hatte ja etwas, dass geklappt hatte, aber eben nicht der Aufgabe entsprechend, also falsch.

Wie würdest du es denn mit den 2 Typen machen? Es gibt ja nur nur die 40ft und 40ftHC und die werden auch per Textdatei mitgegeben? ich habs gerade mit Strings ?

Und zu dem Thema Konstruktor. Ich weiß, dass jede Klasse einen Konstruktor hat, aber zum Bsp beim Kran hab ich ja auch keine weiteren Spezifikationen getroffen ?
 

Noob1234_1234

Aktives Mitglied
Oder muss ich den Container Typ in den jeweiligen Klassen einfach als finale definieren?
Eben zum letzteren, soweit hatte ich sie auch schon, aber was passiert mit den 2 mitgegebenen integern? Das war ja schon heute morgen und gestern mein größtes Problem. Ich hatte ja etwas, dass geklappt hatte, aber eben nicht der Aufgabe entsprechend, also falsch.

Wie würdest du es denn mit den 2 Typen machen? Es gibt ja nur nur die 40ft und 40ftHC und die werden auch per Textdatei mitgegeben? ich habs gerade mit Strings ?

Und zu dem Thema Konstruktor. Ich weiß, dass jede Klasse einen Konstruktor hat, aber zum Bsp beim Kran hab ich ja auch keine weiteren Spezifikationen getroffen ?
 

mihe7

Top Contributor
Das war ja schon heute morgen und gestern mein größtes Problem. Ich hatte ja etwas, dass geklappt hatte, aber eben nicht der Aufgabe entsprechend, also falsch.
Schau Dir das Diagramm aus #101 an: was könnte man mit den Integern anstellen?

Wie würdest du es denn mit den 2 Typen machen? Es gibt ja nur nur die 40ft und 40ftHC und die werden auch per Textdatei mitgegeben? ich habs gerade mit Strings ?
Meinst Du für die Initialisierung des Terminals? Prüfen, welcher String es ist und dann ein Objekt der entsprechenden Klasse erstellen.

Ich weiß, dass jede Klasse einen Konstruktor hat, aber zum Bsp beim Kran hab ich ja auch keine weiteren Spezifikationen getroffen ?
s. Diagramm aus #101. Das "#" vor dem Konstruktor bedeutet übrigens "protected".
 

Noob1234_1234

Aktives Mitglied
Schau Dir das Diagramm aus #101 an: was könnte man mit den Integern anstellen?


Meinst Du für die Initialisierung des Terminals? Prüfen, welcher String es ist und dann ein Objekt der entsprechenden Klasse erstellen.


s. Diagramm aus #101. Das "#" vor dem Konstruktor bedeutet übrigens "protected".

Ja ich weiß, dass ich über getContainerStackID über die ID zugreifen kann und diese mit den per Textdatei gegebenen vergleichen kann/ muss, aber wie initialisier ich denn den Containerstack? Es muss doch alles in eine Methode gepackt werden oder ?
quasi so ?
Java:
public void terminalDoWorkContainer(String containertyp, int id, int weight, int stacknumber, int origin,
            int destination) {

        ContainerStack cs0 = new ContainerStack(stacknumber);
        cs0.place(new Container40ft(containertyp, id, weight));
        Terminal.printLine(cs0);

    }

oder ist der Vorgang des Erstellens der Stacks und der Vorgang des Transports unabhängig voneinader ?
also 2 methoden?
Eine müsste dann so aussehen und die andere so :

Java:
public void terminalDoWorkContainer(String containertyp, int id, int weight, int stacknumber)

bzw
Java:
public void terminalTransportContainer(int origin, int destination) {

    }
 

Noob1234_1234

Aktives Mitglied
Wenn ich mich nicht ganz irre sollte es so eigentlich aussehen ? Also der Transport oder
Code:
public class ContainerTerminal {

    final Crane crane = new Crane();

    ContainerStack cs = new ContainerStack(0);
    ContainerStack cs2 = new ContainerStack(0);

    public void terminalTransportContainer(int origin, int destination) {
        if (cs.getContainerStackID() == origin) {
            crane.moveTo(cs);
            crane.pick();
            if (cs2.getContainerStackID() == destination) {
                crane.moveTo(cs2);
                crane.place();
            }
        }

    }

Edit : Aber hier hab ich von vornerein die Stacks festgelegt und ich glaub das ist nicht der Sinn der Sache ? Also doch alles in eine Methode oder ?
 

mrBrown

Super-Moderator
Mitarbeiter
Wenn ich mich nicht ganz irre sollte es so eigentlich aussehen ? Also der Transport oder
Vermutlich hast du mehr als zwei Container-Stapel, oder?

Falls die tatsächlich erreichbare Hubhöhe geringer als die Höhe des Zielstapels ist, ist es dem Kran nicht möglich, den Container auf dem Zielstapel zu platzieren. Der Container wird in diesem Fall gar nicht erst vom Ursprungsstapel entnommen.
BTW, diesen Teil musst du beim Transport auch noch berücksichtigen.
 

Meniskusschaden

Top Contributor
Na ja, nehmen wir mal an, der Kran kann maximal 10m, der Stapel hat gerade 6m und der Container ist 2m hoch. Nach deiner Formel könnte der Kran das dann nicht machen, weil 10m - 6m >= 6m false ergibt.
Okey du hast recht und ich bin jetzt noch mehr verwirrt -.- ; kannst du mir das bitte in eine mathematische Formel übersetzen. Ich checks imemrnoch :
Tja, was soll man da noch übersetzen? Du hast einen Stapel mit bekannter Höhe und beabsichtigst einen Container mit ebenfalls bekannter Höhe darauf zu stellen. Beides zusammen darf eben nicht größer als die vorgegebene maximale Höhe sein. Das ist schon das ganze Geheimnis.
Bin immernoch der Meinung, dass meine Formel stimmen muss, wobei du gerade ja gezeigt hast, dass es nicht sein kann
Wenn du überzeugt bist, dass deine Formel stimmt, solltest du auch dabei bleiben. Vielleicht habe ich sie ja falsch verstanden.;)
 

Noob1234_1234

Aktives Mitglied
Tja, was soll man da noch übersetzen? Du hast einen Stapel mit bekannter Höhe und beabsichtigst einen Container mit ebenfalls bekannter Höhe darauf zu stellen. Beides zusammen darf eben nicht größer als die vorgegebene maximale Höhe sein. Das ist schon das ganze Geheimnis.

Wenn du überzeugt bist, dass deine Formel stimmt, solltest du auch dabei bleiben. Vielleicht habe ich sie ja falsch verstanden.;)
Jetzt aber ?
Code:
public void pick() {
        if (testHeight() == true) {
            if (MAXHEIGHT >= (position.calculateContainerStackHeight() + containerLoad.getHeight())) {
                while (position.stack.size() < 1) {
                    containerLoad = position.pick();
                }
            }
        }
    }
 

Noob1234_1234

Aktives Mitglied
Vermutlich hast du mehr als zwei Container-Stapel, oder?


BTW, diesen Teil musst du beim Transport auch noch berücksichtigen.

Hab ich den Teil nicht hiermit berücksichtigt?
Code:
public boolean testHeight() {
        if ((MAXHEIGHT - position.calculateContainerStackHeight()) >= MAXHEIGHT) {
            position.place(containerLoad);
            return true;
        }
        return false;
    }
    
    public void pick() {
        if (testHeight() == true) {
            if (MAXHEIGHT >= (position.calculateContainerStackHeight() + containerLoad.getHeight())) {
                while (position.stack.size() < 1) {
                    containerLoad = position.pick();
                }
            }
        }
    }

Es wird zuerst geprüft, ob man ihn absetzen könnte. Wenn das false ist bzw nicht geht, wird der Vorgang gar nicht erst gestartet ?
 

Noob1234_1234

Aktives Mitglied
Kann mir bitte noch enden um das Thema abzuhacken. Ich hab jetzt als Ansatz eine Hashmap benutzt. Als Key hab ich die stacknummer gesetzt, somit kann es keine Duplikate geben oder ? Aber wie geh ich jetzt weiter vor ? Bei der ersten Methode des Terminals sollen jetzt Container auch gesetzt werden, aber wie ? Muss ich die Container Konstruktoren in die ContainerStack Konstruktor packen?

Code:
import java.util.HashMap;
import java.util.List;
import edu.kit.informatik.Terminal;

public class ContainerTerminal {

    final Crane crane = new Crane();

    HashMap<Integer, ContainerStack> hm = new HashMap<Integer, ContainerStack>();

    public void terminalDoWorkContainer(String containertyp, int id, int weight, int stacknumber) {

        hm.put(stacknumber, new ContainerStack(stacknumber));
        cs.place(new Container40ft(containertyp, id, weight));

    }

    public void terminalTransportContainer(int origin, int destination) {

        if (cs.getContainerStackID() == origin) {
            crane.moveTo(cs);
            crane.pick();
            Terminal.printLine(cs);
            if (cs2.getContainerStackID() == destination) {
                crane.moveTo(cs2);
                crane.place();
                Terminal.printLine(cs2);
            }
        }

    }

Oder hat jemand eine bessere Idee als Hashmap ???? Set?
 

Meniskusschaden

Top Contributor
Jetzt aber ?
Java:
public void pick() {
        if (testHeight() == true) {
            if (MAXHEIGHT >= (position.calculateContainerStackHeight() + containerLoad.getHeight())) {
                while (position.stack.size() < 1) {
                    containerLoad = position.pick();
                }
            }
        }
    }
Sagen wir mal so: wenn es nicht sowieso schon falsch wäre, wäre es vielleicht richtig.
Laut folgendem Ausschnitt:
Falls die tatsächlich erreichbare Hubhöhe geringer als die Höhe des Zielstapels ist, ist es dem Kran nicht möglich, den Container auf dem Zielstapel zu platzieren. Der Container wird in diesem Fall gar nicht erst vom Ursprungsstapel entnommen.
soll der Container nicht entnommen werden, wenn er sowieso nicht am Ziel abgelegt werden kann. containerLoad referenziert also noch gar nicht den fraglichen Container. Außerdem machst du das ganze in der pick-Methode, also bevor du überhaupt zum Ziel gefahren bist. Somit referenziert position zu diesem Zeitpunkt auch nicht den Zielstapel.
Der Sinn der Schleife erschließt sich mir nicht.
Was ist der Zweck von testHeight()? Zu prüfen, ob der Kran überhaupt hoch genug ist, um den Container vom Ursprungsstapel zu heben?
 

mrBrown

Super-Moderator
Mitarbeiter
Es wird zuerst geprüft, ob man ihn absetzen könnte. Wenn das false ist bzw nicht geht, wird der Vorgang gar nicht erst gestartet ?
Nein, der Code ist ziemlicher Unsinn.

Mach dir mal bildlich klar, was dort passiert:

Es wird pick aufgerufen (also, Container aufheben).
Das ruft testHeight auf, und testHeight prüft er dann irgendwelchen Unsinn (siehe den Hinweis von @Meniskusschaden) und setzt irgendeinen Container auf den aktuellen Stapel.
Wenn die merkwürdige Bedingung zutrifft, prüfst du das Gewicht (wobei du Gewicht und Höhe zusammen rechnest?!) und hebst den Container auf.

Oder in kurz: Wenn völlig unsinnige Bedingungen zutreffen, stellst du irgendeinen Container auf den Stapel und hebst diesen Container dann wieder auf.



Kann mir bitte noch enden um das Thema abzuhacken.
Bevor du das Thema abhaken kannst, solltest du zumindest ein grundlegendes Verständnis des Problems und des Codes, den du selber schreibst, haben...
 

Noob1234_1234

Aktives Mitglied
Och leute,
bitte ich flehe euch an. Könnt ihr mir dieses eine Mal helfen die Aufgabe fertigzustellen, keine Rätsle mehr nichts. Ich muss dieses Projekt morgen früh fertig haben und mit früh meine ich 6 Uhr. Bitte bitte ich will es nicht mal perfekt haben, aber soll diese Textdatei lesen. Also können wir bitte die Schönheitsop des Codes lassen und einfach zur Sache kommen. Bitteeee Leute bitte. Ich bin kurz vor einem Nervenkollaps, hab jetzt gleich noch eine Klausur und hab schon geheult deswegen. Bitte?
Wenn ihr net helfen wollen, dann sagts bitte direkt, aber ich muss das sputen und ich weiß, dasss was ich sage ist egoistisch und frech, aber wirklich ich fleheee euch alle an. Bitte sagt mir einfach, was ich tun soll.
Bitte oder eben nicht
 

Noob1234_1234

Aktives Mitglied
Alle Kleinigkeiten sind egal, das Programm bekommt diese Eingabe
40ft;100;20000kg;0
40ftHC;200;30000kg;0
40ft;300;22000kg;1
40ft;400;19000kg;1
40ft;500;20000kg;1
40ft;600;22000kg;2
40ftHC;700;28000kg;3
--
2;0
3;2

und soll das hier liefern:
40ft;100;20000kg;0
40ftHC;200;30000kg;0
40ft;600;22000kg;0
40ft;300;22000kg;1
40ft;400;19000kg;1
40ft;500;20000kg;1
40ftHC;700;28000kg;2

Bitte leute nur das. Ich brauch es wirklich dringend. Egal wie, hauptsache das kommt bei raus. Bitte postet mir wie ich meinen Code aufbauen soll, Ich verzweifle und will doch nur mal wieder atmen können. Ich bin euch für die Hilfe bis hier sehr dankbar, aber können wir es bitte vollenden. Wirklich ich hab das Haus tagelang nicht verlassen und kann das am Ende nicht abgeben, Ich bin noch ein absoluter Java Noob, aber bitte bitte bitte, Spoilert mich
 

mihe7

Top Contributor
Ja, das entspricht dem, was ich mir vorgestellt hätte. Da würde ich mich fragen, wie man von Stapel 0 zu Stapel 2 kommt, wenn Stapel 1 höher als die maximale Hubhöhe ist...

Egal wie, hauptsache das kommt bei raus.
OK:
Java:
System.out.println("40ft;100;20000kg;0\n" +
    "40ftHC;200;30000kg;0\n" +
    "40ft;600;22000kg;0\n" +
    "40ft;300;22000kg;1\n" +
    "40ft;400;19000kg;1\n" +
    "40ft;500;20000kg;1\n" +
    "40ftHC;700;28000kg;2");
 

Noob1234_1234

Aktives Mitglied
Ja, das entspricht dem, was ich mir vorgestellt hätte. Da würde ich mich fragen, wie man von Stapel 0 zu Stapel 2 kommt, wenn Stapel 1 höher als die maximale Hubhöhe ist...


OK:
Java:
System.out.println("40ft;100;20000kg;0\n" +
    "40ftHC;200;30000kg;0\n" +
    "40ft;600;22000kg;0\n" +
    "40ft;300;22000kg;1\n" +
    "40ft;400;19000kg;1\n" +
    "40ft;500;20000kg;1\n" +
    "40ftHC;700;28000kg;2");

Ja so hab ich mir das nicht vorgestellt hahaha. ich kann die Textdatei über die Kommandozeile lesen und in einzelne Teile aufteilen, also in Zeilenform (s[0] würde so aussehen = 40ft;100;20000kg;0), aber erste Frage splitte ich ein Array, so dass ich nur die Einzelteile bekomme außer das kg?????

Zweite Frage:
Will mir jmd jetzt verratenm wie meine Methoden heißen und was sie machen bzw entgegennehmen müssen oder nicht? Bitteeee Leute bitte. ich weiß ich bin scheiße aber bitte ich brauch euch

Code:
public class ContainerTerminal {

    final Crane crane = new Crane();

    HashMap<Integer, ContainerStack> hm = new HashMap<Integer, ContainerStack>();

    public void terminalDoWorkContainer(String containertyp, int id, int weight, int stacknumber) {

        hm.put(stacknumber, new ContainerStack(stacknumber));
        cs.place(new Container40ft(containertyp, id, weight));

    }

    public void terminalTransportContainer(int origin, int destination) {

        if (cs.getContainerStackID() == origin) {
            crane.moveTo(cs);
            crane.pick();
            Terminal.printLine(cs);
            if (cs2.getContainerStackID() == destination) {
                crane.moveTo(cs2);
                crane.place();
                Terminal.printLine(cs2);
            }
        }

    }
 

Noob1234_1234

Aktives Mitglied
Ja, das entspricht dem, was ich mir vorgestellt hätte. Da würde ich mich fragen, wie man von Stapel 0 zu Stapel 2 kommt, wenn Stapel 1 höher als die maximale Hubhöhe ist...
Das ist unwichtig für die Aufgabe. Es ist nur ein vereinfachtes Modell. Bitte du scheinst wirklich sehr schlau zu sein. Bitte sag mir wie die Methoden auszusehen haben, damit es zumindest in Theorie klappt
OK:
Java:
System.out.println("40ft;100;20000kg;0\n" +
    "40ftHC;200;30000kg;0\n" +
    "40ft;600;22000kg;0\n" +
    "40ft;300;22000kg;1\n" +
    "40ft;400;19000kg;1\n" +
    "40ft;500;20000kg;1\n" +
    "40ftHC;700;28000kg;2");
[/QUOTE]
 

Noob1234_1234

Aktives Mitglied
Und falls irgendwer helfen will ich erwarte keine perfekten lösungen. Ich würde auch nur 3 Stacks initialisieren und das programm machen lassen, hauptsache der Transport und die 2 oder 1 methode funktionieren. Bitte Leute
 

mihe7

Top Contributor
erste Frage splitte ich ein Array, so dass ich nur die Einzelteile bekomme außer das kg?????
?!?
Java:
String[] einzelteile = zeile.split(";");
Das 2-te Element scheint auf "kg" enden zu müssen. Aber: Du fuchtelst schon wieder an der nächsten Baustelle rum, ohne den Transport erledigt zu haben.

Jetzt kümmern wir uns erstmal die Methode terminalTransportContainer, die bekommt zwei Stapelnummern. Du hast eine Map, mit der Du anhand der Stapelnummer den Stapel ermitteln kannst. Schreib das mal vernünftig um.
 

Noob1234_1234

Aktives Mitglied
Ich bin verzweifet deswegen fuchtel ich überall rum und kurz vorm zusammenbruch.

Meine Problem ist jetzt, dass ich die ContaineStacks in der Map speicher, also müsste ich doch in der Methode TransportContainer durch die Map iterrieren oder bis die Nummer zu einem Key passt? aber wie zum Teufel geht das

Code:
public class ContainerTerminal {

    final Crane crane = new Crane();

    HashMap<Integer, ContainerStack> hm = new HashMap<Integer, ContainerStack>();

    public void terminalDoWorkContainer(String containertyp, int id, int weight, int stacknumber) {

        hm.put(stacknumber, new ContainerStack(stacknumber));
        cs.place(new Container40ft(containertyp, id, weight));

    }

    public void terminalTransportContainer(int origin, int destination) {

        if (cs.getContainerStackID() == origin) {
            crane.moveTo(cs);
            crane.pick();
            Terminal.printLine(cs);
            if (cs2.getContainerStackID() == destination) {
                crane.moveTo(cs2);
                crane.place();
                Terminal.printLine(cs2);
            }
        }

    }
 

mihe7

Top Contributor
Noch was: Du hast anscheinend einen falschen Eindruck. Es ist nicht so, dass wir die Aufgabenstellung lesen und dann in fünf Minuten fertigen Code hinschreiben. Wir müssen das Problem, genauso wie Du, analysieren, um es zu verstehen, modellieren, uns wieder korrigieren usw. Darum heißt es auch Software-Entwicklung und nicht Software-Produktion.

durch die Map iterrieren oder bis die Nummer zu einem Key passt? aber wie zum Teufel geht das
Eine Map bildet einen Schlüssel auf einen Wert ab. Das hat den Vorteil, dass man über den Schlüssel direkt den Wert erhält. Dazu bietet die Map eine Methode get an... Und gib hm einen vernünftigen Namen, z. B. stacks (oder containerStacks).
 

Noob1234_1234

Aktives Mitglied
Noch was: Du hast anscheinend einen falschen Eindruck. Es ist nicht so, dass wir die Aufgabenstellung lesen und dann in fünf Minuten fertigen Code hinschreiben. Wir müssen das Problem, genauso wie Du, analysieren, um es zu verstehen, modellieren, uns wieder korrigieren usw. Darum heißt es auch Software-Entwicklung und nicht Software-Produktion.
Ihr seid trotzdem allesamt wirklich krass

Eine Map bildet einen Schlüssel auf einen Wert ab. Das hat den Vorteil, dass man über den Schlüssel direkt den Wert erhält. Dazu bietet die Map eine Methode get an... Und gib hm einen vernünftigen Namen, z. B. stacks (oder containerStacks).
[/QUOTE]

Code:
if (stacks.containsKey(origin)) {
            crane.moveTo(stacks.); // hier ist das Problem, ich weiß, dass es ein Befehl gibt über den ich über den Key auf das Objekt zugreifen kann, aber ich find ihn nicht
            crane.pick();
            Terminal.printLine(cs);
            if (cs2.getContainerStackID() == destination) {
                crane.moveTo(cs2);
                crane.place();
                Terminal.printLine(cs2);
            }
        }
 

Noob1234_1234

Aktives Mitglied
Ihr seid trotzdem allesamt wirklich krass

Eine Map bildet einen Schlüssel auf einen Wert ab. Das hat den Vorteil, dass man über den Schlüssel direkt den Wert erhält. Dazu bietet die Map eine Methode get an... Und gib hm einen vernünftigen Namen, z. B. stacks (oder containerStacks).

Code:
if (stacks.containsKey(origin)) {
            crane.moveTo(stacks.); // hier ist das Problem, ich weiß, dass es ein Befehl gibt über den ich über den Key auf das Objekt zugreifen kann, aber ich find ihn nicht
            crane.pick();
            Terminal.printLine(cs);
            if (cs2.getContainerStackID() == destination) {
                crane.moveTo(cs2);
                crane.place();
                Terminal.printLine(cs2);
            }
        }
[/QUOTE]
Edit : Ich hab die methode
 

Noob1234_1234

Aktives Mitglied
Soooo müsste es doch klappen in der Theorie (vorausgesetzt meine Befehle und alles sind top)

Code:
public void terminalTransportContainer(int origin, int destination) {

        if (stacks.containsKey(origin)) {
            crane.moveTo(stacks.get(origin));
            crane.pick();

            if (stacks.containsKey(destination)) {
                crane.moveTo(stacks.get(destination));
                crane.place();

            }
        }

    }
 

Noob1234_1234

Aktives Mitglied
Und der andere muss irgendwie so aussehen : Aber es fehlt die Überprüfung ob es schon einen Stack mit er Nummer gibt i guess

Code:
public void terminalDoWorkContainer(String containertyp, int id, int weight, int stacknumber) {

        ContainerStack containerstack = new ContainerStack(stacknumber);
        stacks.put(stacknumber, containerstack);

        containerstack.place(new Container40ft(containertyp, id, weight));

    }
 

Noob1234_1234

Aktives Mitglied
Ich schreib zwar die ganze Zeit nur mit mir aber ich glaube ich habe jetzt einen gesundaussehenden Code für das Terminal

Code:
public class ContainerTerminal {

    final Crane crane = new Crane();

    HashMap<Integer, ContainerStack> stacks = new HashMap<Integer, ContainerStack>();

    public void terminalDoWorkContainer(String containertyp, int id, int weight, int stacknumber) {
        if (!stacks.containsKey(stacknumber)) {
            ContainerStack containerstack = new ContainerStack(stacknumber);
            containerstack.place(new Container40ft(containertyp, id, weight));
            stacks.put(stacknumber, containerstack);
        } else {
            stacks.get(stacknumber).place(new Container40ft(containertyp, id, weight));

        }

    }

    public void terminalTransportContainer(int origin, int destination) {

        if (stacks.containsKey(origin)) {
            crane.moveTo(stacks.get(origin));
            crane.pick();

            if (stacks.containsKey(destination)) {
                crane.moveTo(stacks.get(destination));
                crane.place();

            }
        }

    }
 

Noob1234_1234

Aktives Mitglied
Scheint zu helfen :)

Ich frage mich gerade, was das ganze hier mit Vererbung zu tun haben soll... (s. Titel).

Frag mich net. Die Aufgabe ist im Kontext Verrbung gestellt worden und ich weiß es auch net, wobei es ja die 2 Arten Container gibt und eigentlich muss ich irgendwie die entssprechenden Konstruktoren aufrufen, aber das mach ich nicht. Ich gebe einfach den Typ als String mit und joa wobei ich ja sogar eine Exception schreiben könnte, die alles ablehnt außer "40ft" und "40ftHC" aber ich lass es glaub ich.

Ich brauch nur noch eine toStringMethode für das Terminal und dann muss ich doch noch am Kran und den Befehlen korrigieren oder kannst du mir kurz sagen, was ich falsch habe bei pick und den Bedingungen?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Arbeitszeit / Zeiterfassung - Gedanken und Modellierung Java Basics - Anfänger-Themen 122
L Modellierung Widerstandsnetzwerk Java Basics - Anfänger-Themen 15
M Problem in der Modellierung Java Basics - Anfänger-Themen 20
D Verständnisfrage zur Modellierung einer HDD Java Basics - Anfänger-Themen 17
F OO - Modellierung Java Basics - Anfänger-Themen 24
S Modellierung von Karteneffekten ähnlich YUGIOH Java Basics - Anfänger-Themen 2
1 Modellierung eines Bankkunden Java Basics - Anfänger-Themen 6
N Modellierung eines Programms in UML (Klassendiagramm) Java Basics - Anfänger-Themen 2
B Klassen Modellierung einer Kneipe Java Basics - Anfänger-Themen 86
A Modellierung Java Basics - Anfänger-Themen 8
M Modellierung eines trivialen Web-Shops Java Basics - Anfänger-Themen 12
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
M Vererbung - Polymorphie Java Basics - Anfänger-Themen 37
L Java- Vererbung Java Basics - Anfänger-Themen 4
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 12
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 1
I JSON / XML Struktur mit Vererbung / Interfaces Java Basics - Anfänger-Themen 0
M Interface oder Vererbung? Java Basics - Anfänger-Themen 12
M Vererbung Java Basics - Anfänger-Themen 6
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
M Generics Vererbung Listen Java Basics - Anfänger-Themen 2
A Methoden Vererbung und Interface Java Basics - Anfänger-Themen 14
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Java Basics - Anfänger-Themen 7
D Vererbung Java Basics - Anfänger-Themen 3
K Schleife berechnet kein Ergebnis (Vererbung) Java Basics - Anfänger-Themen 6
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
W Zur Vererbung: Wann und wie? Java Basics - Anfänger-Themen 35
H Datenkapselung, Vererbung und UML Java Basics - Anfänger-Themen 16
districon Super-Stichwort/ Vererbung Java Basics - Anfänger-Themen 3
YaU Vererbung erstellt NullPointerException? Java Basics - Anfänger-Themen 4
1 Vererbung Klassenattribute Java Basics - Anfänger-Themen 9
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
N Thema Vererbung Java Basics - Anfänger-Themen 31
A Vererbung Vererbung Übung Java Basics - Anfänger-Themen 5
B Vererbung - Sichtbarkeitsmodifikation - protected Java Basics - Anfänger-Themen 10
B Best Practice Unschlüssig ob Vererbung oder Interface Java Basics - Anfänger-Themen 2
G Java Vererbung Java Basics - Anfänger-Themen 8
Y Vererbung Konto - Anfangsprobleme Java Basics - Anfänger-Themen 7
A Vererbung Klassen im Bezug auf Auto´s Java Basics - Anfänger-Themen 18
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
M Vererbung mit Enums Java Basics - Anfänger-Themen 8
Kirby.exe Vererbung im Detail erklärt? Java Basics - Anfänger-Themen 9
M Fehlendes Verständnis für dynamische Bindung und Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung im Computerspiel Java Basics - Anfänger-Themen 7
J Probleme mit Vererbung Java Basics - Anfänger-Themen 4
I Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
W Methoden Verständnisfrage Vererbung von Methoden Java Basics - Anfänger-Themen 14
V Vererbung Java Basics - Anfänger-Themen 2
J Frage zur Vererbung Java Basics - Anfänger-Themen 1
J Vererbung Java Basics - Anfänger-Themen 3
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
O Vererbung Ueben mit kleiner Datenstruktur von Räumen Java Basics - Anfänger-Themen 10
O Umgang mit Vererbung verstehen Java Basics - Anfänger-Themen 4
A Vererbung/Interfaces/Generics Java Basics - Anfänger-Themen 12
O Vererbung änderung des Konstruktors Java Basics - Anfänger-Themen 8
L Vererbung Java Basics - Anfänger-Themen 5
E HashMap+Vererbung Java Basics - Anfänger-Themen 11
E Vererbung super-Methoden Aufruf Java Basics - Anfänger-Themen 3
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
A Objekterstellung bei der Vererbung Java Basics - Anfänger-Themen 7
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
S Vererbung Java mehrfach Java Basics - Anfänger-Themen 10
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
A Klassen Vererbung privater Methoden und Member Java Basics - Anfänger-Themen 12
A Konstruktoren Vererbung Java Basics - Anfänger-Themen 3
ReinerCoder Vererbung von JFrame in einer Klasse entfernen Java Basics - Anfänger-Themen 5
W Vererbung, abstract und Konstruktoren Java Basics - Anfänger-Themen 30
J Vererbung und Methodenaufruf Java Basics - Anfänger-Themen 11
G Polymorphie, Vererbung, statischer Typ, Laufzeittyp Java Basics - Anfänger-Themen 2
H Vererbung mit private instanzvariablen Java Basics - Anfänger-Themen 9
S Vererbung Funktionsweise Code zur Vererbung Java Basics - Anfänger-Themen 1
C Methoden Vererbung private Attribute/public Methoden Java Basics - Anfänger-Themen 4
S Verständnis Vererbung Java Basics - Anfänger-Themen 3
D JavaFX Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Generizität und Vererbung Java Basics - Anfänger-Themen 4
A Vererbung bei Klassen mit Objekt der Klasse im Konstruktor Java Basics - Anfänger-Themen 4
K Vererbung Octagon von Circle Java Basics - Anfänger-Themen 0
B Hilfe bei Vererbung Java Basics - Anfänger-Themen 2
D Vererbung Frage zum Klassenaufbau mit Vererbung Java Basics - Anfänger-Themen 1
T Vererbung und interface. Java Basics - Anfänger-Themen 1
S Gehaltsberechnung (Vererbung, abstrakte Methoden) Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 1
F Vererbung in zwei Richtungen? Java Basics - Anfänger-Themen 14
D Vererbung / Polymorphie Java Basics - Anfänger-Themen 5
O Vererbung Java Basics - Anfänger-Themen 5
MiMa Vererbung Theorie OK, Praxis ?? Java Basics - Anfänger-Themen 4
Arif Vererbung Vererbung Variablen überschreiben Java Basics - Anfänger-Themen 1
C Vererbung - Ausgaben bestimmen Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 10
L Setter und Getter/Vererbung Java Basics - Anfänger-Themen 6
C Konstruktoren und Vererbung Java Basics - Anfänger-Themen 2
J Kleinere Frage zur Vererbung/Objekterzeugung Java Basics - Anfänger-Themen 2
G Vererbung Java Basics - Anfänger-Themen 12
J Vererbung privater Variablen Java Basics - Anfänger-Themen 7
J Vererbung Vererbung von Methoden Java Basics - Anfänger-Themen 6
B Vererbung Java Basics - Anfänger-Themen 12
K Vererbung (super) Java Basics - Anfänger-Themen 2
A ArrayQueue mit Exceptions und Vererbung Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben