Erste Schritte Lagerverwaltung

JohnnyNa

Mitglied
Guten Tag,
ich habe schon den ein oder anderen der zig Forenbeiträge zu einer Aufgabe, die euch bestimmt schon zum Hals raushängt, gelesen, leider aber kein passenden Lösungsansatz gefunden bisher.

Folgende Situation:
ich habe die Methode auflisten(int [][] argArray) {
}
und ein 2D Array mit [75][4].
Was soll die Methode machen?
Ich will mit dieser Methode die bereits vergebenen Arrays ausgeben, allerdings nur die.
Egal wie ich es versuche, ich ende entweder an dem Punkt, wo die Schleife mir alle Arrays, mit den Werten [0, 0, 0, 0] ausgibt und die bereits vergebenen Werte. Oder aber an dem Punkt, dass eine Ausgabe nur erfolgt, wenn der erste Index != 0 ist. Das macht aber kein sinn, wenn der user den ersten KistenID wert ja selbst festlegt.

Idee1> eine globale Variable neben KistenID, die per Inkrementierung die KistenID automatisch festlegt, dann würde die Variante klappen, dass nur gedruckt wird, wenn der erste kistenID "index" groesser 0 ist. Vorschläge bzw. Denkanstöße zur Umsetzung gerne gesehen, Lösungen will ich mir selbst erarbeiten, also will nichts vorgesagt bekommen :)

Idee2> das Array durchsuchen nach einem Wert größer 0, wenn kistenID index wert > 0 gefunden, dann Zwischenspeichern.
Dann nur die Arrays der entsprechenden zwischengespeicherten belegten kistenIDs ausdrucken.

wenn ich also als erste kistenIDs die Werte 1 7 und 27 festlege, sollte es die schleife durchlaufen und alle werte die an [0] stehen (wenn i = index) werden ausgedruckt. Arrays die nur mit den Default Werten [0,0,0,0] befüllt sind, sollen ausser acht gelassen werden.

Java:
package lagerverwaltung;


import javax.swing.*;
import java.util.Arrays;
import java.util.List;
import java.util.ArrayList;


/**
 * @author jonasstute
 *
 */
public class DemoTapeSelfTitle {
    

// Methode eingabe, kein rueckgabewert (void) // 4 lokale Variablen fuer kistenID, breite, laenge, hoehe;
    // die Kisten-ID wird vom Anwender eingegeben, wenn noch nicht vorhanden, dann wird eine neue erstellt, wenn vorhanden, dann abbruch
    // zur Kisten-ID werden vom Anwender die Werte der Laenge, breite, hoehe eingegeben und im array der Id gespeichert
    
    private static void eingabe(int[][] argArray) {
        int kistenId;
        int breite, laenge, hoehe;
            
            kistenId = Integer.parseInt(JOptionPane.showInputDialog("Bitte eine Kisten-ID zwischen 1-75 eingeben: "));
            // Bedingungen werden geprueft: liegt der Wert innerhalb des Array und wurde er noch nicht genutzt
            if(kistenId>0 && kistenId <= argArray.length) {
                if (argArray[kistenId-1][0] == 0){
                    argArray[kistenId-1][0] = kistenId;
                    
                    breite = Integer.parseInt(JOptionPane.showInputDialog("Wert fuer die Breite der Kiste eingeben"));
                    argArray[kistenId-1][1] = breite;
                    
                    hoehe = Integer.parseInt(JOptionPane.showInputDialog("Wert fuer die Hoehe der Kiste eingeben"));
                    argArray[kistenId-1][2] = hoehe;
                    
                    laenge = Integer.parseInt(JOptionPane.showInputDialog("Wert fuer die Laenge der Kiste eingeben"));
                    argArray[kistenId-1][3] = laenge;
                    
                    System.out.println("Die Kiste " + kistenId + " hat nun die Werte:  " + breite + " Breite, " + hoehe + " Hoehe, " + laenge + " Laenge." );

                  
                  
                    
                }
                }else if (kistenId > argArray.length || kistenId < 0){
                    System.out.println("Kisten-ID out of Range");
                
            }
            }
    // Methode fuer die Anzeige einer bekannten Kisten-ID (muss vorher also eingegeben worden sein)
    // kein return (void) // anwender gibt kistenid ein, wenn vorhanden anzeige der Daten, wenn nicht, ausgabe "Fehlermeldung"
    
    private static void anzeigen(int[][] argArray) {
        int kistenId;
        kistenId = Integer.parseInt(JOptionPane.showInputDialog("Geben Sie eine vorhandene Kisten-ID ein: "));
        
        try {
        for(int i = 0; i <= argArray.length; i++) {
            if (kistenId > 0 && kistenId <= argArray.length && argArray[i][0] == kistenId) {
                System.out.println("Die Maße der Kiste " + kistenId + " ist " + Arrays.toString(argArray[i]));
                return;
            }
                
        }   
        }catch (Exception e) {
            System.out.println("Die gewaehlte ID ist noch nicht vergeben.");
        }
    }
    
    // Methode fuer das bearbeiten einer bekannten Kisten-ID (muss vorher also eingegeben worden sein)
        // kein return (void) // anwender gibt kistenid ein, wenn vorhanden anzeige der Daten, wenn nicht, ausgabe "Fehlermeldung"
    private static void aendern(int[][] argArray) {
        int kistenId;
        int breite, laenge, hoehe;
        
        
        
            kistenId = Integer.parseInt(JOptionPane.showInputDialog("Bitte die Kisten-ID eingeben deren Werte Sie aendern moechten: "));
            
            if (argArray[kistenId-1][0] == 0 || kistenId > argArray.length ) {
                System.out.println("Deine Eingabe war ungueltig." );
            }
            
                if(kistenId>0 && kistenId <argArray.length) {
                    if(argArray[kistenId-1][0]!=0) {
                        breite = Integer.parseInt(JOptionPane.showInputDialog("Kistenbreite eingeben"));
                        argArray[kistenId-1][1] = breite;
                        
                        laenge = Integer.parseInt(JOptionPane.showInputDialog("Kistenlaenge eingeben"));
                        argArray[kistenId-1][2] = laenge;
                        
                        hoehe = Integer.parseInt(JOptionPane.showInputDialog("Kistenhoehe eingeben"));
                        argArray[kistenId-1][3] = hoehe;
                        
                        System.out.println("Die Kiste " + kistenId + " hat nun die Werte:  " + breite + " Breite, " + hoehe + " Hoehe, " + laenge + " Laenge." );
                    }
        }
                
    }
    
        
    // Methode fuer loeschen einer bekannten Kisten-ID (muss vorher also eingegeben worden sein)
        // kein return (void) // anwender gibt kistenid ein, wenn vorhanden anzeige der Daten, wenn nicht, ausgabe "Fehlermeldung"
    private static void loeschen(int[][] argArray) {
        int kistenId;
        int breite, laenge, hoehe;
        
            kistenId = Integer.parseInt(JOptionPane.showInputDialog("Bitte gebe die Kisten-ID ein die du loeschen moechtest: "));
                        
            if(kistenId>0 && kistenId <= argArray.length)
                if (argArray[kistenId-1][0] > 0){
                            
                    breite = 0;
                    argArray[kistenId-1][1] = breite;
                    
                    hoehe = 0;
                    argArray[kistenId-1][2] = hoehe;
                    
                    laenge = 0;
                    argArray[kistenId-1][3] = laenge;
                    
                    argArray[kistenId-1][0] = 0;
                                
                    System.out.println("Die Kiste " + kistenId + " hat nun die Werte:  " + breite + " Breite, " + hoehe + " Hoehe, " + laenge + " Laenge." );
                    kistenId = 0;

                }else {
                    System.out.println("ungueltige Eingabe");
                }
            }
    // Methode fuer die Anzeige aller Kisten-ID (muss vorher also nicht eingegeben worden sein)
        // kein return (void) // anwender gibt kistenid ein, wenn vorhanden anzeige der Daten, wenn nicht, ausgabe "Fehlermeldung"
    
    /*private static void auflisten(int[][] argArray) {
        for (int i0 = 0; i0 < argArray.length; i0++) {
            int[] idArray = argArray[i0];
            System.out.println(Arrays.toString(argArray[i0]));
            
            if () {
                System.out.println("Es sind noch keine Kisten-IDs festgelegt.");
            }else {
                for (int i1 = 0; i1 < idArray.length; i1++){
                    int value = idArray[i1];
                    
                }
            }
        }
    }*/
        
    private static void listeDerKisten(int[][] argArray) {

    }
    
    

    public static void main(String[] args) {
        System.out.println("_____Willkommen bei der Lagerverwaltung____");
        int lagerArray[][] = new int[75][4];
        
        String auswahlTreffen;
        char auswahlBestaetigen;
        
        while(true) {
            
            System.out.println("\n1 Neuen Eintrag erstellen");
            System.out.println("2 Bestehenden Eintrag bearbeiten");
            System.out.println("3 Bestehenden Eintrag anzeigen");
            System.out.println("4 Bestehenden Eintrag loeschen");
            System.out.println("5 Alle Eintrage anzeigen");
            System.out.println("6 Programm beenden");
            
            auswahlTreffen = JOptionPane.showInputDialog("Bitte treffen Sie Ihre Auswahl");
            auswahlBestaetigen = auswahlTreffen.charAt(0);
            
            switch (auswahlBestaetigen) {
            case '1':
                System.out.println("Sie haben ausgewaehlt:\"Neuen Eintrag erstellen\"");
                eingabe(lagerArray);
                break;
            case '2':
                System.out.println("Sie haben ausgewaehlt:\"Bestehenden Eintrag bearbeiten\"");
                aendern(lagerArray);
                break;
            case '3':
                System.out.println("Sie haben ausgewaehlt:\"Bestehenden Eintrag anzeigen\"");
                anzeigen(lagerArray);
                break;
            case '4':
                System.out.println("Sie haben ausgewaehlt:\"Bestehenden Eintrag loeschen\"");
                loeschen(lagerArray);
                break;
            case '5':
                System.out.println("Sie haben ausgewaehlt:\"Alle Eintraege anzeigen\"");
                listeDerKisten(lagerArray);
                //System.out.println(idList);
                break;
            case '6':
                System.out.println("Sie haben ausgewaehlt:\"Programm beenden\"");
                System.out.println("\nAuf Wiedersehen!");
                return;           
            }
        }
    }
}
 

shokwave

Mitglied
Das macht aber kein sinn, wenn der user den ersten KistenID wert ja selbst festlegt.
Also wenn die Aufgabenstellung die selbe ist, wie in dem andere Thread, dann lese ich das anders.
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 interpretiere ich so, dass "Sie" also der Programmierer und nicht der Nutzer die ID festlegt.
Des Weiteren wird explizit darauf hingewiesen, das leere Kisten die ID 0 haben.
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.
 

JohnnyNa

Mitglied
Also wenn die Aufgabenstellung die selbe ist, wie in dem andere Thread, dann lese ich das anders.

Das interpretiere ich so, dass "Sie" also der Programmierer und nicht der Nutzer die ID festlegt.
Des Weiteren wird explizit darauf hingewiesen, das leere Kisten die ID 0 haben.
ah okay, also ist die "Taktik" mit einem Input Dialog eine Nummer zu verlangen nicht sehr schlau, weil so nicht sichergestellt werden kann, dass die IDs chronologisch und ohne zu skippen verwendet werden.

Dann werde ich erstmal das angehen und dann schauen ob mein "Problem" dann immer noch besteht. Ich hab schon ne Idee, wie es funktionieren könnte.

Vielen lieben dank!
 
Zuletzt bearbeitet:

Neue Themen


Oben