Lagerverwaltung

KonradN

Super-Moderator
Mitarbeiter
Du musst mit den Indices aufpassen - wo greifst Du denn immer zu?

Beispiel:
Java:
         if(Loeschen[nummer-1][0] == nummer){               
          Loeschen[0] [0] = 0;             
        }

Wenn also im Array an Platz nummer-1 etwas gespeichert ist, dann löschst Du die Kiste an Platz 0?

Ist natürlich bei anzeigen ähnlich. Wenn die erste Kiste (Platz 0) nicht gesetzt ist, dann zeigt er gar nichts an. Und wenn da eine Kiste sein sollte, dann wird er vermutlich nur Müll ausgeben.

Daher wäre aus meiern Sicht wichtig:
a) Den Algorithmus immer genau überlegen. Dazu ist eine Formulierung in einer gut verständlichen Sprache gut.
b) Dann den Algorithmus mit guten Bezeichnern schreiben.

- Variablen fangen mit kleinen Buchstaben an.
- Sinnvolle Namen vergeben! Wird bei eingabe eine Eingabe übergeben? Das ist doch der Kistenstapel und keine Eingabe!
 

mihe7

Top Contributor
@cocosch, es geht ja vermutlich um den folgenden Code:
Java:
     static void anzeigen(int[][] Anzeigen){
            int nummer;
            nummer=Integer.parseInt(JOptionPane.showInputDialog("Geben Sie eine vorhandene Kistennummer ein"));
            for(int i = 0; i < Anzeigen.length; i++){
             if(nummer > 0 && nummer <= Anzeigen.length && Anzeigen[i][0] == nummer){
             System.out.println("\nDie Daten der Kiste sind t:\t"+ Arrays.toString(Anzeigen[i]));
             return;
                }
            }
            System.out.println("\n Die Kistennummer " + nummer + " ist nicht bekannt");
              
        }
Der ist natürlich totaler Quatsch, denn Du willst hier eine bestimmte Kiste anzeigen, nämlich die mit der eingegebenen Kistennummer. Was willst Du da mit einer Schleife?

Mach die Schleife raus, überleg Dir, wann die Eingabe gültig ist (steht ja schon im Code) und dann zeigst Du einfach eine entsprechende Ausgabe an.
 

JohnnyNa

Mitglied
Ich habe tatsächlich bei meiner Lösungsvariante auch eine schleife und sogar zusätzlich noch ein try catch statement verwendet.

Java:
    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.");
        }
    }

es erfüllt seinen zweck insofern, als dass das entsprechende array nur angezeigt werden kann, wenn es auch vorhanden ist. Das catch hilft dabei die exception Meldung zu verarbeiten, so kann auch wenn man anzeigen lässt und die kistenID noch nicht vergeben ist, weiter machen ohne dass das Programm abstürzt. Allerdings ist meine Lösung offensichtlich unnötig und sinnlos, wenn ich @mihe7 richtig verstehe?
 

mihe7

Top Contributor
Allerdings ist meine Lösung offensichtlich unnötig und sinnlos, wenn ich @mihe7 richtig verstehe?
Das kommt darauf an, wie der Rest des Codes aussieht. Wenn sich die Kistennummer auf den Index eindeutig abbilden lässt, dann muss man natürlich nicht über eine Schleife die richtige Kiste raussuchen.

Die Aufgabe taucht hier nicht das erste Mal auf und soweit ich mich entsinne, sollten immer n Kisten mit den Nummern 1 bis n in einem Array der Länge n verwaltet werden, d. h. der Index ist einfach die Kistennummer - 1. Ist die Kistennummer aber unabhängig davon, musst Du natürlich mit Hilfe einer Schleife (besser wäre natürlich eine geeignete Datenstruktur wie z. B. eine Map) die richtige Kiste raussuchen.
 

Neue Themen


Oben