Lagerverwaltung erstellen - mehrdimensionale Arrays

melaniemueller

Aktives Mitglied
Hey zusammen!
Nachdem ich nun Stunden über Stunden hier im Forum und noch auf zig anderen Seiten recherchiert habe zu dieser Aufgabe und dennoch es nicht komplett schaffe kommt nun doch ein Thread von mir. Wie ich mit bekommen habe, gibt es zu genau meiner Aufgabe aus dem Fernstudium bereits einige Fragen - so i'm sorry - aber ich hab sie mir alle durchgelesen und mir helfen sie bei meinen aktuellen Problemen leider nicht, daher bitte helft mir o_O

Aufgabenstellung:

Erstellen Sie eine „Lagerverwaltung“, die folgende Daten für Kisten speichern kann:

• eine eindeutige Nummer zur Identifikation jeder einzelnen Kiste,

• die Breite, Länge und Höhe jeder Kiste.

Die Nummer zur Identifikation der Kiste können Sie nach einem beliebigen Schema selbst vergeben. Stellen Sie aber durch geeignete Verfahren sicher, dass bei der Eingabe einer neuen Kiste nicht eine bereits vergebene Nummer benutzt wird.

Das Programm soll die Daten der Kisten lediglich zur Laufzeit speichern – also nur so lange, wie das Programm arbeitet. Es sollen maximal Daten von 75 Kisten verwaltet werden können.

Das Programm soll folgende Funktionen anbieten:

• Eingabe einer neuen Kiste,

• Löschen der Daten einer vorhandenen Kiste,

• Ändern der Daten einer vorhandenen Kiste,

• Anzeigen der Daten einer vorhandenen Kiste und

• eine Listenfunktion, die die Daten aller vorhandenen Kisten anzeigt.

Beim Löschen, Ändern und Anzeigen soll der Zugriff auf die Daten der Kiste über die Nummer der Kiste erfolgen.

Für die Umsetzung gelten folgende Vorgaben:

• Speichern Sie die Daten in einem mehrdimensionalen Array. Erstellen Sie dieses Array lokal in der Methode main(). Verwenden Sie bitte keine Klassenvariable für das Array.

• Stellen Sie sicher, dass beim Zugriff auf die Daten der Kisten die Grenzen des Arrays nicht verlassen werden.

• Erstellen Sie für das Eingeben, Löschen, Ändern, Anzeigen und Auflisten jeweils eigene Methoden.

• Sorgen Sie dafür, dass beim Löschen, Ändern, Anzeigen und Auflisten nur auf Einträge zugegriffen werden kann, für die bereits Daten erfasst wurden. Dazu können Sie zum Beispiel überprüfen, ob die Nummer der Kiste noch den Wert 0 hat, der beim Anlegen des Arrays automatisch zugewiesen wird. Um eine Kiste zu löschen, reicht es dann, die Nummer der Kiste wieder auf den Wert 0 zu setzen.

• Erstellen Sie in der Methode main() ein Auswahlmenü für den Zugriff auf die einzelnen Funktionen der Lagerverwaltung.

• Kommentieren Sie sowohl die verwendeten Variablen als auch die Methoden. Geben Sie bei den Methoden bitte eine kurze Beschreibung der Funktionsweise, der verwendeten Argumente und eines eventuellen Rückgabewerts an.


Mein bisheriger Ansatz der eigentlich fast fertig sein sollte:

Java:
package einsendeaufgabe_4;
import java.util.Arrays;
import javax.swing.*;

public class einsendeaufgabe_4 {

    //Eingabe einer neuen Kiste
    static void eingabe (int[][]Eingabe) {
        int nummer;
        int breite, länge, höhe;
       
            nummer=Integer.parseInt(JOptionPane.showInputDialog("Geben Sie eine Kistennummer zwischen 1-75 an"));
            //wenn die Nummer gültig ist und noch nicht verwendet wurde, werden die Daten eingegeben
            if (nummer>0 && nummer<=Eingabe.length)
                if(Eingabe[nummer-1][0]==0) {
                    //Nummer zuweisen
                    Eingabe[nummer-1][0]=nummer;
                    //Werte einlesen
                    breite=Integer.parseInt(JOptionPane.showInputDialog("Breite der Kiste"));
                    Eingabe[nummer-1][1]=breite;
                    länge=Integer.parseInt(JOptionPane.showInputDialog("Länge der Kiste"));
                    Eingabe[nummer-1][2]=länge;
                    höhe=Integer.parseInt(JOptionPane.showInputDialog("Höhe der Kiste"));
                    Eingabe[nummer-1][3]=höhe;
                    System.out.println("Die Kiste " + nummer + " hat nun die Werte:  " + breite + " Breite, " + länge + " Länge, " + höhe + " Höhe." );
                }else {
                    System.out.println("Kiste ungültig");
                    }
       
   
    }
   
   
    // Anzeige der Daten einer vorhandenen Kiste
    static void anzeigen (int[][]Anzeigen) {
        int nummer;
        nummer=Integer.parseInt(JOptionPane.showInputDialog("Bitte die gewünschte Kistennummer eingeben."));
        for(int i =0; i < Anzeigen.length; i++) {
            if (nummer>0 && nummer<=Anzeigen.length && Anzeigen[i][0]==nummer) {
                System.out.println("Die Daten der Kiste lauten: " + Arrays.toString(Anzeigen[i]));
                return;
               
            }
        }
        System.out.println("Die Kistennummer ist ungültig");
       
    }
   
    // Anzeigen aller Daten von allen Kisten
    static void liste (int[][]Liste) {
        for (int kistenIndex = 0;kistenIndex < Liste.length; kistenIndex++) {
            if(Liste[kistenIndex] == null) {
                continue;
            }
            for (int detailsIndex=0;detailsIndex<Liste[kistenIndex].length;detailsIndex++) {
           
           
       
            System.out.println(Liste[kistenIndex][detailsIndex]); }
    }
    }
   
   
    // Löschen einer Kiste
   
      static void löschen(int[][] Löschen) {
       
              int nummer;
       
        //Kistennummer eingeben
        do {
          nummer=Integer.parseInt(JOptionPane.showInputDialog("Geben Sie bitte die zu löschende Kistennummer ein!"));
       
          //Überprüfung ob die eingegebene Kiste vorhanden ist
          if(nummer>0 && nummer<=Löschen.length)
              if(Löschen[nummer-1][0]==nummer){
             
              Löschen[0][0]=nummer;
             
              }
         
              else {
                  System.out.println("\nDie Kistennummer " +nummer + " ist nicht vorhanden");
              }
        }
          while(nummer<=0 || nummer>Löschen.length);
          }
   
      //Ändern einer Kiste
       
      static void ändern(int[][]Ändern) {
   
            int nummer;
            int breite, laenge, hoehe;
           
             //Kistennummer eingeben
            do {
                nummer=Integer.parseInt(JOptionPane.showInputDialog("Geben Sie bitte eine Kistennummer ein, die sie ändern möchten!"));
               
                //Wenn Kistennummer gültig
                if(nummer>0 && nummer<=Ändern.length)
                    if(Ändern[nummer-1][0]!=0){
       
                        //Werte Einlesen
                        breite=Integer.parseInt(JOptionPane.showInputDialog("Kistenbreite"));
                        Ändern[nummer-1][1]=breite;
                       
                        laenge=Integer.parseInt(JOptionPane.showInputDialog("Kistenlaenge"));
                        Ändern[nummer-1][2]=laenge;
                       
                        hoehe=Integer.parseInt(JOptionPane.showInputDialog("Kistenhoehe"));
                        Ändern[nummer-1][3]=hoehe;
                       
                    }
                       
                        else {
                            System.out.println("\nDie Kistennummer ist ungültig oder noch nicht vergeben");
                        }
                }
                while(nummer<=0 || nummer>Ändern.length);
       
    }
   
    public static void main(String[] args) {
       
    //Die Vereinbarung des Arrays
int [][] lagerverwaltung = new int [75][4];


//Auswahl der Funktion

String funktionEinlesen;

char funktion;
while (true) {
System.out.println("Folgende Funktionen stehen Ihnen zur Auswahl: \n");
System.out.println("A \t Eingabe einer neuen Kiste");
System.out.println("B \t Löschen einer Kiste");
System.out.println("C \t Ändern einer Kiste");
System.out.println("D \t Daten einer Kiste anzeigen");
System.out.println("E \t Daten aller Kisten anzeigen");
System.out.println("Q \t Programm beenden");

funktionEinlesen=JOptionPane.showInputDialog("Wählen Sie eine Funktion");
funktion = funktionEinlesen.charAt(0);

//Auswahl auswerten

switch(funktion) {

case 'a':
case 'A':
    System.out.println("\nSie haben \"Eingabe einer neuen Kiste\" gewählt");
    eingabe(lagerverwaltung);
    break;
   
case 'b':
case 'B':
    System.out.println("\nSie haben \"Löschen einer Kiste\" gewählt");
    löschen(lagerverwaltung);
    break;

case 'c':
case 'C':
    System.out.println("\nSie haben \"Ändern einer Kiste\" gewählt");
    ändern(lagerverwaltung);
    break;

case 'd':
case 'D':
    System.out.println("\nSie haben \"Daten einer Kiste anzeigen\" gewählt");
    anzeigen(lagerverwaltung);
    break;
case 'e':
case 'E':
    System.out.println("\nAktuelle Daten aller Kisten:");
    liste(lagerverwaltung);
    break;
case 'q':
case 'Q':
    return;
}
}

}

}

Was aktuell noch nicht funktioniert:

1. das Anzeigen aller bisher gespeicherten Werte im Array. Bedeutet alle angelegten Kisten mit Breite, Länge, Höhe. Aktuell zeigt er mir nur 0en an. Ich würde es gerne übersichtlich darstellen und natürlich nur vergebene Kisten, daher eigentlich der if-Part mit continue, aber irgendwas scheint hier nicht zu funktionieren.

2. das Löschen einer vorhandenen Kiste - hier passiert bisher gar nichts.

Ich war komplett überfordert mit dieser Aufgabe und alles was dort nun steht war lange Recherche und häufiges nachblättern in meinen Heften...ich hoffe ich komme noch zum Ergebnis und es ist danach alles plausibel für mich, denn schließlich sollte man ja auch verstehen was man da schreibt. 😅

Ich freue mich über sämtliche Hilfe!
 

Mart

Top Contributor
• Speichern Sie die Daten in einem mehrdimensionalen Array. Erstellen Sie dieses Array lokal in der Methode main(). Verwenden Sie bitte keine Klassenvariable für das Array.
was das sollte versteh ich noch nicht ganz



Kommentieren Sie sowohl die verwendeten Variablen als auch die Methoden. Geben Sie bei den Methoden bitte eine kurze Beschreibung der Funktionsweise, der verwendeten Argumente und eines eventuellen Rückgabewerts an.

noch als anekdote find ich diesen Satz ziemlich lustig "einen eventuellen Rückgabewert"...als ob die Java Virtuelle Maschine sich einfach sagt "ja was kommt den da ...kommt da ein int ...kommt da nix ...wer weis ..wer weis.." und kommentare zu Sachen die es im Code nicht gibt sind immer die beschten :D
 
Zuletzt bearbeitet:

LimDul

Top Contributor
Btgl., des Löschens, da ist diese Zeile falsch:
Code:
             Löschen[0][0]=nummer;
Du willst den Eintrag für die Kiste mit der Nummer auf 0 setzen - nicht die Kiste 0 auf die nummer.
 

mrBrown

Super-Moderator
Mitarbeiter
noch als anekdote find ich diesen Satz ziemlich lustig "einen eventuellen Rückgabewert"...als ob die Java Virtuelle Maschine sich einfach sagt "ja was kommt den da ...kommt da ein int ...kommt da nix ...wer weis ..wer weis.." und kommentare zu Sachen die es im Code nicht gibt sind immer die beschten :D
Das „eventueller Rückgabewert“ bezieht sich einfach nur darauf, das manche Methode einen haben und manche nicht ("void").
 

mrBrown

Super-Moderator
Mitarbeiter
Hier gibts doch zig Threads zu genau dieser Aufgabe, liegt das grad an mir, dass ich keinen einzigen über die Suche finde?
 

Mart

Top Contributor
Das „eventueller Rückgabewert“ bezieht sich einfach nur darauf, das manche Methode einen haben und manche nicht ("void").
ist nicht void ein leerer rücckgabewert..also ein Rückgabewert der leer ist... nur weil er leer ist ist er trotzdem da :D

die Zeile

Java:
return;
geht glaub ich auch um aus der Methode raus zu brechen...weis aber nimmer genau wo es funktioniert habe es nie gebraucht
 

kneitzel

Top Contributor
Wo sind denn die anderen Klassen? die Kisten Klasse...DIe Speicherklasse wo sind die D:
Also um den TE nicht zu verwirren: Es ist nicht Deine Aufgabe, mehrere Klassen zu erstellen.

Der TE ist noch recht weit am Anfang und soll nun erst einmal mit 2D Arrays arbeiten.

ist nicht void ein leerer rücckgabewert..also ein Rückgabewert der leer ist... nur weil er leer ist ist er trotzdem da :D
void ist einfach ein keyword, das angibt, dass eine Methode keine Rückgabe hat.
JLS 8.4.5:
The result of a method declaration either declares the type of value that the method returns (the return type), or uses the keyword void to indicate that the method does not return a value.

Und natürlich kann man mit return eine Methode verlassen, de keine Rückgabe hat.

1. das Anzeigen aller bisher gespeicherten Werte im Array. Bedeutet alle angelegten Kisten mit Breite, Länge, Höhe. Aktuell zeigt er mir nur 0en an. Ich würde es gerne übersichtlich darstellen und natürlich nur vergebene Kisten, daher eigentlich der if-Part mit continue, aber irgendwas scheint hier nicht zu funktionieren.
Hier ist der check falsch. Du prüfst auf null, aber das ist falsch. Du legst ja ein 2D Array an, daher ist diese Prüfung nie wahr.
Die Prüfung muss sein, ob [kistenIndex][0] == 0 ist (statt [kistenIndex] == null).
Hier ist also das Verständnis wichtig: null ist was anderes als 0!
 

Dompteur

Top Contributor
Bei deiner eingabe Methode solltest du auch den Fall berücksichtigen, dass ein neuer Eintrag an der Stelle eines vorher gelöschten eingefügt werden soll.
Du musst also prüfen ob "lager[index][0] == 0" ist.
 

melaniemueller

Aktives Mitglied
Also um den TE nicht zu verwirren: Es ist nicht Deine Aufgabe, mehrere Klassen zu erstellen.

Der TE ist noch recht weit am Anfang und soll nun erst einmal mit 2D Arrays arbeiten.


void ist einfach ein keyword, das angibt, dass eine Methode keine Rückgabe hat.
JLS 8.4.5:


Und natürlich kann man mit return eine Methode verlassen, de keine Rückgabe hat.


Hier ist der check falsch. Du prüfst auf null, aber das ist falsch. Du legst ja ein 2D Array an, daher ist diese Prüfung nie wahr.
Die Prüfung muss sein, ob [kistenIndex][0] == 0 ist (statt [kistenIndex] == null).
Hier ist also das Verständnis wichtig: null ist was anderes als 0!
Vielen Dank für deine Antwort! Stimmt, so ist es für mich auch verständlich, das habe ich nun geändert und jetzt funktioniert es auch!
Beim Löschen hapert es noch. Ich habe verstanden, dass der Fehler in der Zeile liegt wie LimDul geschrieben hat, aber irgendwie versteh ich nicht wie ich das ganze logisch umkehren kann.
Alles richtig nachvollziehen zu können fällt mir noch schwer 😅 Aber ich bin doch großer Hoffnung, dass dies mit jeder Übung besser wird.
 

kneitzel

Top Contributor
Schauen uns noch einmal die Aufgabe etwas an:
Die Nummer zur Identifikation der Kiste können Sie nach einem beliebigen Schema selbst vergeben. Stellen Sie aber durch geeignete Verfahren sicher, dass bei der Eingabe einer neuen Kiste nicht eine bereits vergebene Nummer benutzt wird.

Das hast Du so gelöst, dass Du in dem 2D Array den ersten Index als Nummer der Kiste -1 genommen hast. Das erkennt man z.B. bei der Eingabe:
if(Eingabe[nummer-1][0]==0)
Also Kiste mit der Nummer "nummer" ist in Index "nummer-1" gespeichert. Die Id ist dabei noch zusätzlich in dem zweiten index=0 gespeichert. Steht da eine 0, dann ist der Lagerplatz leer.

Wenn das genannte if prüft, ob ein Lagerplatz leer ist, dann musst Du das halt beim leeren setzen.
Du prüfst ob 2dArray[id-1][0] == 0 ist. Also musst du dann setzen 2dArray[id-1][0] = 0.

Zur Erläuterung schauen wir uns nun noch einmal an, was LimDul geschrieben hat:
Btgl., des Löschens, da ist diese Zeile falsch:
Code:
             Löschen[0][0]=nummer;
Du willst den Eintrag für die Kiste mit der Nummer auf 0 setzen - nicht die Kiste 0 auf die nummer.
Derzeit setzt du beim Löschen eine id in das erste Feld - also für die Kiste mit id=1.
Das wollen wir aber nicht, sondern wir wollen, dass für die id (Kistennummer) nummer der Platz nun leer ist.
Dazu musst Du dann wieder schauen, was oben die Überlegungen waren ...
 

Jw456

Top Contributor
Derzeit setzt du beim Löschen eine id in das erste Feld - also für die Kiste mit id=1.
Das wollen wir aber nicht, sondern wir wollen, dass für die id (Kistennummer) nummer der Platz nun leer ist.
Dazu musst Du dann wieder schauen, was oben die Überlegungen waren ..
und auch beim Einfügen musst du schauen welcher Platz in dein Array noch frei ist.
 

kneitzel

Top Contributor
und auch beim Einfügen musst du schauen welcher Platz in dein Array noch frei ist.
Das macht er ja - die Aufgabe besagt:
Die Nummer zur Identifikation der Kiste können Sie nach einem beliebigen Schema selbst vergeben.
Und das hat er - die Ids sind genau von 1-n mit n der Lagergröße.
Und da es keine doppelten Ids geben kann, ist jede Kiste am Platz id-1.

Somit prüft er einfach nur:
if(Eingabe[nummer-1][0]==0) {


Aber ja - das war auch beim ersten Lesen meine Überlegung. Ich hätte da auch eine andere, komplexere Lösung, erwartet. Dieses selbst überlegte Schema ist ggf. nicht das, das die Aufgabe vorgesehen hat.

Für den TE:
Die Idee, die ich da in die Aufgabe interpretiert hatte: Die Id kann eine beliebige Zahl sein im Bereich von int.
Beim Einfügen einer Kiste ist daher zuerst notwendig, alle Elemente durchzugehen und zu schauen: Ist das Feld leer? Ein leeres Feld merkst Du dir! und dann prüfen: Ist da eine Kiste mit der gewünschten id vorhanden? Hast Du eine Kiste mit der id schon, dann ist ein Fehler auszugeben. Ebenso, wenn kein leerer Lagerplatz gefunden wurde.
Beim Löschen müsste man dann auch das Array durchsuchen um die Kiste zu finden ...
u.s.w.

Aber deine deutlich einfachere Lösung scheint erst einmal ok zu sein aus Sicht der Aufgabe. Aus Übungsgründen würde ich Dir raten, aber evtl. auch die andere Art und Weise zu nutzen. Und da dann mit weiteren Methoden zu arbeiten. Also eine Methode, die z.B. nach einem index einer Kiste sucht. Die ist universell verwendbar um eine Liste zu löschen, eine Kiste auszugeben, prüfen, ob die Kiste vorhanden ist, ...
 

Jw456

Top Contributor
Ich sehe in der Eingabe Methode aber keine Schleife die prüft welcher Platz im Array noch frei ist. Und auch keine Warnung wenn alle Plätze belegt sind.
 

melaniemueller

Aktives Mitglied
Das macht er ja - die Aufgabe besagt:

Und das hat er - die Ids sind genau von 1-n mit n der Lagergröße.
Und da es keine doppelten Ids geben kann, ist jede Kiste am Platz id-1.

Somit prüft er einfach nur:
if(Eingabe[nummer-1][0]==0) {


Aber ja - das war auch beim ersten Lesen meine Überlegung. Ich hätte da auch eine andere, komplexere Lösung, erwartet. Dieses selbst überlegte Schema ist ggf. nicht das, das die Aufgabe vorgesehen hat.

Für den TE:
Die Idee, die ich da in die Aufgabe interpretiert hatte: Die Id kann eine beliebige Zahl sein im Bereich von int.
Beim Einfügen einer Kiste ist daher zuerst notwendig, alle Elemente durchzugehen und zu schauen: Ist das Feld leer? Ein leeres Feld merkst Du dir! und dann prüfen: Ist da eine Kiste mit der gewünschten id vorhanden? Hast Du eine Kiste mit der id schon, dann ist ein Fehler auszugeben. Ebenso, wenn kein leerer Lagerplatz gefunden wurde.
Beim Löschen müsste man dann auch das Array durchsuchen um die Kiste zu finden ...
u.s.w.

Aber deine deutlich einfachere Lösung scheint erst einmal ok zu sein aus Sicht der Aufgabe. Aus Übungsgründen würde ich Dir raten, aber evtl. auch die andere Art und Weise zu nutzen. Und da dann mit weiteren Methoden zu arbeiten. Also eine Methode, die z.B. nach einem index einer Kiste sucht. Die ist universell verwendbar um eine Liste zu löschen, eine Kiste auszugeben, prüfen, ob die Kiste vorhanden ist, ...
Würde das Durchsuchen denn mit der Methode Arrays.binarySearch() funktionieren? Die hatte ich mir auch angeschaut, als erste Überlegung, da ich darüber auch in einer der letzten Kapitel etwas gelernt habe. Um diese zu nutzen muss man jedoch vorher auch Arrays.sort() nutzen, so steht es dort. Ausprobiert habe ich es aber bisher nicht.
 

mrBrown

Super-Moderator
Mitarbeiter
Ich sehe in der Eingabe Methode aber keine Schleife die prüft welcher Platz im Array noch frei ist. Und auch keine Warnung wenn alle Plätze belegt sind.
Die IDs der Kisten sind eindeutig und die ID wird als Index benutzt – es kann also ein Platz für eine Kiste nicht schon belegt sein.
 
Zuletzt bearbeitet:

melaniemueller

Aktives Mitglied
Ich sehe in der Eingabe Methode aber keine Schleife die prüft welcher Platz im Array noch frei ist. Und auch keine Warnung wenn alle Plätze belegt sind.
Java:
//wenn die Nummer gültig ist und noch nicht verwendet wurde, werden die Daten eingegeben
            if (nummer>0 && nummer<=argEingabe.length)
                if(argEingabe[nummer-1][0]==0) {
                    //Nummer zuweisen
                    argEingabe[nummer-1][0]=nummer;
                    //Werte einlesen
                    breite=Integer.parseInt(JOptionPane.showInputDialog("Breite der Kiste"));
                    argEingabe[nummer-1][1]=breite;
                    länge=Integer.parseInt(JOptionPane.showInputDialog("Länge der Kiste"));
                    argEingabe[nummer-1][2]=länge;
                    höhe=Integer.parseInt(JOptionPane.showInputDialog("Höhe der Kiste"));
                    argEingabe[nummer-1][3]=höhe;
                    System.out.println("Die Kiste " + nummer + " hat nun die Werte:  " + breite + " Breite, " + länge + " Länge, " + höhe + " Höhe." );
                }else {
                    System.out.println("Kiste ungültig");
                    }

Hier ist meine Überprüfung.
 

Jw456

Top Contributor
Die IDs der Kisten sind eindeutig und die ID wird als Index benutzt – es kann also ein Platz für eine Kiste nicht schon belegt sein.
OK in diesem Fall kann sie nur Kisten Nummern von 1- 75 eingeben. Und Kiste Nr. 5 wird dann immer auf Platz 5 gelegt.
gut scheint die Aufgabe zu sein.
 
Zuletzt bearbeitet:

melaniemueller

Aktives Mitglied
Ich danke euch! Ich bin nun nochmal alle Funktionen durchgegangen und es hat alles funktioniert, daher hab ich das Ganze nun so eingereicht und bin gespannt auf die Korrektur.

Tolles Forum mit direkter, verständlicher Hilfe! 😊
 

Meniskusschaden

Top Contributor
Die Nummer zur Identifikation der Kiste können Sie nach einem beliebigen Schema selbst vergeben. Stellen Sie aber durch geeignete Verfahren sicher, dass bei der Eingabe einer neuen Kiste nicht eine bereits vergebene Nummer benutzt wird.

Das Programm soll die Daten der Kisten lediglich zur Laufzeit speichern – also nur so lange, wie das Programm arbeitet. Es sollen maximal Daten von 75 Kisten verwaltet werden können.
Das Programm soll folgende Funktionen anbieten:

• Eingabe einer neuen Kiste,

Ich finde die Aufgabe problematisch, weil sie sprachlich unpräzise formuliert ist. Insbesondere wird nicht definiert, wann eine Kiste als "neu" und eine Nummer als "vergeben" gelten soll. "neu" im Sinne von "sie ist gerade nicht im Lager" oder im Sinne von "die Kiste hatten wir noch nie"?

Beispiel: Eine Kiste mit der Nummer 10 wird eingefügt, gelöscht und erneut eingefügt.

Ist das nicht das Einfügen einer neuen Kiste (immerhin heißt die Funktion "neue Kiste") mit einer bereits vergebenen Nummer (immerhin wurde sie schon mal vergeben)?

Nirgends steht, dass die Nummer 10 durch das Löschen wieder als "nicht vergeben" gelten soll. Und es ist auch nicht klar, ob eine ausgelagerte Kiste wieder als "neu" gelten darf, wenn sie erneut eingelagert wird.

Es kann sein, dass das alles so gemeint ist, aber gerade die Vorgabe, dass die Kistennummer im Array gespeichert werden soll, suggeriert eigentlich etwas anderes. Da auch nicht explizit gefordert wird, dass der Anwender die Kistennummer beim Einlagern eingeben soll, hätte ich es vermutlich so gelöst, dass die Kistennummer per Inkrement vom Programm vergeben wird und die Kiste auf den nächsten freien Platz gelegt wird.
 

Mart

Top Contributor
Ich finde die Aufgabe problematisch, weil sie sprachlich unpräzise formuliert ist. Insbesondere wird nicht definiert, wann eine Kiste als "neu" und eine Nummer als "vergeben" gelten soll. "neu" im Sinne von "sie ist gerade nicht im Lager" oder im Sinne von "die Kiste hatten wir noch nie"?

Beispiel: Eine Kiste mit der Nummer 10 wird eingefügt, gelöscht und erneut eingefügt.

Ist das nicht das Einfügen einer neuen Kiste (immerhin heißt die Funktion "neue Kiste") mit einer bereits vergebenen Nummer (immerhin wurde sie schon mal vergeben)?

Nirgends steht, dass die Nummer 10 durch das Löschen wieder als "nicht vergeben" gelten soll. Und es ist auch nicht klar, ob eine ausgelagerte Kiste wieder als "neu" gelten darf, wenn sie erneut eingelagert wird.

Es kann sein, dass das alles so gemeint ist, aber gerade die Vorgabe, dass die Kistennummer im Array gespeichert werden soll, suggeriert eigentlich etwas anderes. Da auch nicht explizit gefordert wird, dass der Anwender die Kistennummer beim Einlagern eingeben soll, hätte ich es vermutlich so gelöst, dass die Kistennummer per Inkrement vom Programm vergeben wird und die Kiste auf den nächsten freien Platz gelegt wird.
Anscheinend war es eine Abgabe Prüfung bzw note ,,die sind niemals klar formuliert
 

Mart

Top Contributor
Findest du? Ich habe lange keine Prüfung mehr abgelegt, aber meiner Erfahrung nach wurde da früher immer sehr genau formuliert und man musste auf jedes Wort achten.
du formulierst sie so schwammig wie möglcih um spiel raum zu habaen dass du jeden durchlassen kannst damit du keine Anzeige erhalten kannst ...und bei mir im Studium kommen auch die durch die eifnach nur Geld für Anwälte haben
 

Meniskusschaden

Top Contributor
du formulierst sie so schwammig wie möglcih um spiel raum zu habaen dass du jeden durchlassen kannst damit du keine Anzeige erhalten kannst ...und bei mir im Studium kommen auch die durch die eifnach nur Geld für Anwälte haben
:DVerschwörungstheorien sind ja immer interessant. Aber was soll denn das Motiv für den Aufgabensteller sein? Bezahlt ihn der reiche Student? Also zahlt der für schwammige Aufgaben, die er nicht lösen kann, um sich anschließend ein positives Ergebnis einzuklagen? Hört sich nicht so überzeugend an. Warum bezahlt er ihn nicht direkt für die Lösungen? Wäre doch viel einfacher.
 

Mart

Top Contributor
:DVerschwörungstheorien sind ja immer interessant. Aber was soll denn das Motiv für den Aufgabensteller sein? Bezahlt ihn der reiche Student? Also zahlt der für schwammige Aufgaben, die er nicht lösen kann, um sich anschließend ein positives Ergebnis einzuklagen? Hört sich nicht so überzeugend an. Warum bezahlt er ihn nicht direkt für die Lösungen? Wäre doch viel einfacher.
wir haben 19 Leute die geklagt haben letzes jahr dass die Prüfung zu schwer war in OOP2 und dürfen jetzt nochmal die Prüfung schreiben
 

kneitzel

Top Contributor
Aus "zu schwer" folgert sich nicht, dass etwas "schwammig" formuliert war.

Exakte Formulierungen schützen ansonsten vor Klagen. Wenn etwas nicht eindeutig ist, dann öffnen sich ja erst die Optionen, das anzufechten.

Und wenn da 19 Studenten geklagt haben, dann ist d für uns hier erst einmal nichts dazu zu sagen, denn den genauen Fall kennen wir nicht. Da wäre ansonsten wichtig zu erfahren, was da denn der genaue Vorwurf war. Und selbst wenn das ein Fall war, der so liegt wie Du vermutest (Also Ursache schwammige Formulierungen oder so), dann ist das ein einzelner Fall. Das zu verallgemeinern dürfte auch schwer zu rechtfertigen sein.

Ansonsten sage ich mal: Herzlich willkommen in der realen Welt. Das Thema "Low Performer" und "No-Performer" wirst Du in Konzernen auch noch mitbekommen wenn Du sowas noch nicht kennst.
 

Mart

Top Contributor
"Nenne 5 UI Controls" war zb eine Aufgabe ...wir hatten da Javafx... und alle "das haben wir nicht gehabt" .... weil der Ausdruck "GUI Controls" in der Vorlesugn bneutzt wurde
 

kneitzel

Top Contributor
Dann liegt es an einer Ungenauigkeit. Wobei ich da schon überlege, was für Transferleistungen man da von so Personen erwarten darf ...

Ich muss da an ein Bild denken, das ich in der Plauderecke vor einiger Zeit gepostet habe ... ja, so eine Aufgabe ist nicht zeitgemäß und viel zu schwer. Es muss immer in der Form sein: "Ein Feld hat eine Länge von 5m und eine Breite von 4m. Berechne den Flächeninhalt, indem Du Länge mal Breite rechnest und kreuze die richtige Antwort an: a) blau b) Es ist 17:23 c) 20 m² d) Das Haus steht auf einer grünen Wiese....."

Oder der Thread neulich - aber lassen wir das Thema ...
 

mihe7

Top Contributor
"Nenne 5 UI Controls" war zb eine Aufgabe ...wir hatten da Javafx... und alle "das haben wir nicht gehabt" .... weil der Ausdruck "GUI Controls" in der Vorlesugn bneutzt wurde
Also bitte, wer da schreit "das haben wir nicht gehabt", sollte vielleicht seinen Schulabschluss zurückgeben. Mit so einem Käse kommt man ja selbst in der Baumschule nicht durch :)

Vorstellbar wäre, dass auf diese Frage speziell JavaFX-Controls erwartet und ausschließlich diese gezählt worden sind. Das geht - je nach Kontext - natürlich nicht. Strittig könnte der Fall werden, wenn im Kurs ausschließlich JavaFX behandelt wurde.
 

Mart

Top Contributor
Also bitte, wer da schreit "das haben wir nicht gehabt", sollte vielleicht seinen Schulabschluss zurückgeben. Mit so einem Käse kommt man ja selbst in der Baumschule nicht durch :)

Vorstellbar wäre, dass auf diese Frage speziell JavaFX-Controls erwartet und ausschließlich diese gezählt worden sind. Das geht - je nach Kontext - natürlich nicht. Strittig könnte der Fall werden, wenn im Kurs ausschließlich JavaFX behandelt wurde.
Es war nur auf javafx bezogen udn wir haben nru javafx gemacht ...1 Semester Lang

wir haben über 20 verschiedene UI Controls benutzt
Label
TextArea
TextField
Button
ComboBox

wären volle punktzahl gewesen... nach 1em Semester von purem Javafx sollte man da irgendwelche 5 COntrols gebacken kriegen
 

kneitzel

Top Contributor
Die Frage war zu schwer - sie hätte halt zum ankreuzen sein müssen:

Kreuze die Antwort mit 5 UI Controls an:
a) Berlin, Hamburg, München, Kiel, Bielefeld
b) Label, TextArea, TextField, Button, ComboBox
c) 10m², 5m², 10 dm², 25l
d) Student, Professor, Sekretärin, Studentische Hilfskraft, Dozent

Das ist dann auch die Vorbereitung zur Wissenschaftliche Arbeit:
Wähle das gebundene Werk mit der Wissenschaftlichen Ausarbeitung aus und gib es ab:
a) Herr der Ringe, 1. Band
b) Harry Potter und der Gefangene von Azkaban
c) <irgend ein wissenschaftlicher Titel>
d) Biene Maya und ihre Freunde

Wobei das bestimmt auch Klagen nach sich zieht: Wie soll man in einer so begrenzten Zeit 4 Ausarbeitungen lesen? Ok, d) war ein Bilderbuch für kleine Kinder, aber Herr der Ringe und Harry Potter sind ja doch schon etwas dickere Werke ...

Und 15% der Studenten sind durchgefallen - die haben beim Durchblättern des Kinderbuches so viel neues gelernt, dass sie überzeugt waren, dass dies das wissenschaftliche Werk gewesen sein müsste ...

*scnr* nein, so negativ ist mein Bild nicht auf heutige Studenten. Aber etwas Spaß muss ja sein :)
 

Mart

Top Contributor
Die Frage war zu schwer - sie hätte halt zum ankreuzen sein müssen:

Kreuze die Antwort mit 5 UI Controls an:
a) Berlin, Hamburg, München, Kiel, Bielefeld
b) Label, TextArea, TextField, Button, ComboBox
c) 10m², 5m², 10 dm², 25l
d) Student, Professor, Sekretärin, Studentische Hilfskraft, Dozent

Das ist dann auch die Vorbereitung zur Wissenschaftliche Arbeit:
Wähle das gebundene Werk mit der Wissenschaftlichen Ausarbeitung aus und gib es ab:
a) Herr der Ringe, 1. Band
b) Harry Potter und der Gefangene von Azkaban
c) <irgend ein wissenschaftlicher Titel>
d) Biene Maya und ihre Freunde

Wobei das bestimmt auch Klagen nach sich zieht: Wie soll man in einer so begrenzten Zeit 4 Ausarbeitungen lesen? Ok, d) war ein Bilderbuch für kleine Kinder, aber Herr der Ringe und Harry Potter sind ja doch schon etwas dickere Werke ...

Und 15% der Studenten sind durchgefallen - die haben beim Durchblättern des Kinderbuches so viel neues gelernt, dass sie überzeugt waren, dass dies das wissenschaftliche Werk gewesen sein müsste ...

*scnr* nein, so negativ ist mein Bild nicht auf heutige Studenten. Aber etwas Spaß muss ja sein :)
ankreuz Fragen sind nicht mehr erlaubt an dieser Hochschule weil zu oft geklagt wurde :D

um genau zu sein Multiple Choice
 

Wajahat

Neues Mitglied
Hi, ich wollte dich mal etwas zu deinem Lagerprogramm der Einsendeaufgabe 4 Fragen.:)

Und zwar wie du es hinbekommen hast, dass die Bezeichnung der Kiste nur einmal gültig ist und nicht mehrmals eingelesen werden kann ?
 

kneitzel

Top Contributor
Hi, ich wollte dich mal etwas zu deinem Lagerprogramm der Einsendeaufgabe 4 Fragen.:)

Und zwar wie du es hinbekommen hast, dass die Bezeichnung der Kiste nur einmal gültig ist und nicht mehrmals eingelesen werden kann ?
Bezeichnung war ja nur die Nr. der Kiste und die entsprach dem Platz im Array. Durch diesen Trick wurde das etwas vereinfacht.
Sprich: Das Entscheidene war das: Eingabe[nummer-1][0]=nummer; (Im ersten Code - Eingabe war das Array mit den Daten).

Wenn man dies nicht hat und eine Kiste mit beliebiger Bezeichnung / Nummer gespeichert werden würde, dann müsste man natürlich das Array durchsehen und die Bezeichnungen prüfen.
 

Wajahat

Neues Mitglied
Bezeichnung war ja nur die Nr. der Kiste und die entsprach dem Platz im Array. Durch diesen Trick wurde das etwas vereinfacht.
Sprich: Das Entscheidene war das: Eingabe[nummer-1][0]=nummer; (Im ersten Code - Eingabe war das Array mit den Daten).

Wenn man dies nicht hat und eine Kiste mit beliebiger Bezeichnung / Nummer gespeichert werden würde, dann müsste man natürlich das Array durchsehen und die Bezeichnungen prüfen.
Super dann versuch ich mal step by step alles nachzuvollziehen, muss nämlich den gleichen Code schreiben :)

Und herzlichen Dank für die schnelle und ausführliche Antwort
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Frage betreff Programmierbücher zu Lagerverwaltung als Konsolenprogramm Java Basics - Anfänger-Themen 3
R Java (Eclipse) "Lagerverwaltung" HILFE Java Basics - Anfänger-Themen 13
C Lagerverwaltung Java Basics - Anfänger-Themen 5
C 2dimensionales array, Lagerverwaltung Java Basics - Anfänger-Themen 64
B Lagerverwaltung Java Basics - Anfänger-Themen 45
X Lagerverwaltung mit mehrdimensionalen Array Java Basics - Anfänger-Themen 13
P Lagerverwaltung umsetzung Java Basics - Anfänger-Themen 10
T Hilfe! --> Lagerverwaltung Java Basics - Anfänger-Themen 5
T Countdown erstellen Java Basics - Anfänger-Themen 7
I ZIP File erstellen Java Basics - Anfänger-Themen 10
U Ordner in neuen erstellten Ordner erstellen Java Basics - Anfänger-Themen 12
C Fehler beim erstellen eines Objektes Java Basics - Anfänger-Themen 3
B Zurück Button erstellen Java Basics - Anfänger-Themen 1
B JaxB - Referenzen erstellen? Java Basics - Anfänger-Themen 2
K Rekursion: Rechenmauer mit Array erstellen Java Basics - Anfänger-Themen 17
alice98 Erste Schritte Liste erstellen ohne vorgefertigte Klassen Java Basics - Anfänger-Themen 1
Aqtox Hallo ich muss für die Schule ein Wuerfell Duell erstellen jedoch habe ich ein fehler Java Basics - Anfänger-Themen 4
E Classpath Datai erstellen Java Basics - Anfänger-Themen 3
B eine methode erstellen Java Basics - Anfänger-Themen 7
I Entity erstellen, die für API gedacht ist Java Basics - Anfänger-Themen 33
M Packages erstellen mit Java-Editor Java Basics - Anfänger-Themen 6
L FinanzApp erstellen Java Basics - Anfänger-Themen 1
J Junit4 Klasse erstellen Java Basics - Anfänger-Themen 5
B Warteschlange erstellen mit LinkedList ? Java Basics - Anfänger-Themen 6
Animal-Mother BMI Rechner erstellen für W/M Java Basics - Anfänger-Themen 7
F GSON file mit einer List erstellen Java Basics - Anfänger-Themen 2
Ray19941 Über BlueJ Textdatei selbstständig erstellen lassen Java Basics - Anfänger-Themen 2
J Java Queue mit default Werten erstellen Java Basics - Anfänger-Themen 4
JaVaN0oB Bruchklasse erstellen Java Basics - Anfänger-Themen 9
N Kreismuster auf Bestehendem Kreis erstellen Java Basics - Anfänger-Themen 10
K Rahmen erstellen mit mehrdimensionalem Array Java Basics - Anfänger-Themen 1
B Hilfe bei Map Liste erstellen Java Basics - Anfänger-Themen 10
F Adjunkte Matrix erstellen Java Basics - Anfänger-Themen 3
J Objekt-Array dynamischer Länge aus Benutzereingaben erstellen Java Basics - Anfänger-Themen 6
T Startbildschirm für ein Spiel erstellen Java Basics - Anfänger-Themen 0
C Probleme mit dem Erstellen und Importieren von Packages Java Basics - Anfänger-Themen 6
GermanPie Discord Text Channel erstellen? Java Basics - Anfänger-Themen 1
K Objektdiagramm erstellen Java Basics - Anfänger-Themen 3
C Wie kann ich Versionen eines Projektes in Eclipse erstellen? Java Basics - Anfänger-Themen 3
D Klassen Klassendiagramm richtig erstellen Java Basics - Anfänger-Themen 20
S Objekte indiziert erstellen Java Basics - Anfänger-Themen 27
C eigene Methoden erstellen (Instanzmethoden) Java Basics - Anfänger-Themen 7
B Methode für jede beliebe Entity erstellen Java Basics - Anfänger-Themen 7
E Filmsammlung erstellen Java Basics - Anfänger-Themen 6
B Eine Methode erstellen Java Basics - Anfänger-Themen 3
M Erstellen eines insets Objekts, GridBagLayout Java Basics - Anfänger-Themen 13
I ArrayList erstellen innerhalb einer Zeile? Java Basics - Anfänger-Themen 3
N String N-Gramme mit Stream erstellen Java Basics - Anfänger-Themen 7
K Quersumme erstellen Java Basics - Anfänger-Themen 7
M Wie kann ich ein Objekt erstellen, wenn sich der Klassenname in einer Variablen befindet? Java Basics - Anfänger-Themen 10
D Input/Output Mehrzeiligen String aus Textdatei erstellen Java Basics - Anfänger-Themen 5
C Erstellen eines Widerstandsnetzwerks Java Basics - Anfänger-Themen 10
B Neue Liste erstellen, wenn Objekte bestimmte Referenz hat / Gruppierung von Einträgen Java Basics - Anfänger-Themen 12
A Taschenrechner mit Gui erstellen Java Basics - Anfänger-Themen 9
S Variablen Variablen in einer Schleife erstellen lassen Java Basics - Anfänger-Themen 11
S Hilfe : Unendlich viele Zufallszahlen erstellen? Java Basics - Anfänger-Themen 8
P Arrays "automatisch" erstellen lassen Java Basics - Anfänger-Themen 12
L Baum aus Integer Liste erstellen Java Basics - Anfänger-Themen 0
M Regex für bestimmte Wörter bzw. bestimmte Zeichen erstellen Java Basics - Anfänger-Themen 5
D Zusammenhängenden Graphen für Gleisnetz erstellen Java Basics - Anfänger-Themen 13
Y Unterschied zwischen WindowBuilder und herkömmlichen erstellen des GUI´s? Java Basics - Anfänger-Themen 9
M Writer für unterschiedliche Obj/inbt/double erstellen? Java Basics - Anfänger-Themen 1
Kirby.exe Generische Objekt Instanz erstellen Java Basics - Anfänger-Themen 14
P Fractal erstellen Java Basics - Anfänger-Themen 4
H Objekt mit Methode erstellen Java Basics - Anfänger-Themen 6
C Java Warenkorb erstellen Java Basics - Anfänger-Themen 10
L Queue mithilfe von 2 Stacks erstellen Java Basics - Anfänger-Themen 1
M Erstellen eines Stacks Java Basics - Anfänger-Themen 14
D java main methode kann nicht kompiliert werden (Erstellen eines Objekts) Java Basics - Anfänger-Themen 6
S Methode in der Klasse erstellen Java Basics - Anfänger-Themen 2
B Mit methode Objekt aus anderer Klasse erstellen Java Basics - Anfänger-Themen 6
G "Ladebalken" erstellen - Übung Java Basics - Anfänger-Themen 3
K Klassen Klasse erstellen, die Punkte eines Koordinatensystems repräsentiert? Java Basics - Anfänger-Themen 3
Tommy135 Event erstellen Java Basics - Anfänger-Themen 7
C Pyramide aus * erstellen Java Basics - Anfänger-Themen 23
Freshy Java Hyperlink erstellen Java Basics - Anfänger-Themen 11
D Ausführbare jar/exe aus JAVAFX Projekt erstellen (IntelliJ) Java Basics - Anfänger-Themen 14
O Anonyme Klasse einer Liste erstellen Java Basics - Anfänger-Themen 7
B Signatur erstellen - Bild ist nur weiß Java Basics - Anfänger-Themen 0
F Erstellen zweier Objekte mit dem selben Inhalt Java Basics - Anfänger-Themen 1
S Arrays erstellen Java Basics - Anfänger-Themen 6
D Algorithmus in Pseudocode mit log2(n) Operationen erstellen Java Basics - Anfänger-Themen 3
J ShortCut erstellen aber wie die dll einbinden Java Basics - Anfänger-Themen 3
D Methoden Textdokument erstellen und auslesen. Java Basics - Anfänger-Themen 46
H Bilddateien erstellen und beschreiben mit Java... Java Basics - Anfänger-Themen 3
A Mit Rekursion Zufallszahlen erstellen und größte finden Java Basics - Anfänger-Themen 5
J Eine Liste von Listen erstellen Java Basics - Anfänger-Themen 11
B HTML Code / Seite auslesen und JAVA Objekte erstellen Java Basics - Anfänger-Themen 12
CptK Best Practice Klassendiagramm aus fertigen Klassen erstellen lassen Java Basics - Anfänger-Themen 2
B JUnit Test erstellen Java Basics - Anfänger-Themen 6
A Liste aus drei Strings erstellen Java Basics - Anfänger-Themen 5
F Abrechnungsprogramm erstellen Student (Anfänger) Java Basics - Anfänger-Themen 2
T Klassen Klassenübergreifende Objekte erstellen lassen Java Basics - Anfänger-Themen 5
D new arraylist (List) dynamisch erstellen Java Basics - Anfänger-Themen 1
S Runde Buttons erstellen Java Basics - Anfänger-Themen 10
CptK Methoden JLabel erstellen & verschieben Java Basics - Anfänger-Themen 1
I Methode addCharacter erstellen Java Basics - Anfänger-Themen 34
J ArrayList Name mit String erstellen Java Basics - Anfänger-Themen 8
G Sequenzdiagramm erstellen Java Basics - Anfänger-Themen 1
N Sicherheitsnummer erstellen und verändern können Java Basics - Anfänger-Themen 1

Ähnliche Java Themen


Oben