Tipps zum Code

Digital DEC

Mitglied
Hallo Zusammen .
Wieder mal ein Grünschnabel der sich zu Wort meldet und Hilfe gebrauchen kann.
Ja auch ich habe mich dazu entschlossen das Programmieren zu erlernen.
Ich weis ich werde mit meiner frage auch wieder einige nerven .Es tuuuut mir Leid wirklich !!!
Aber auch ich sitze schon seit nunmehr fast zwei wochen an dieser aufgabe und weis auch nicht mehr weiter.

bitte ein Paar tips bitte bitte bitte:
Was ist zu Verbessern an diesem Code?



import java.util.Arrays;
import javax.swing.*;
/**Diese Klasse enthält Methoden zur Verwaltung von Kisten
* Die Kisten werden in einem 2D-Array gespeichert, wobei jede
* Kiste durch ihre Nummer, Breite, Länge,Höhe representiert wird
*/

public class Java04d_einsend_01 {


//Eingabe einer gültigen Kistennummer
static int eingabeKistennummer() {
int nummer;
do {

nummer =
Integer.parseInt(JOptionPane.showInputDialog("Geben Sie bitte eine Kistennummer ein von (1-75)"));
if (nummer <= 0 || nummer >75) {
System.out.println("Die Kistennummer ist üngültig");
}
}while (nummer <= 0 || nummer > 75);
return nummer;
}

/* Fügt eine neue Kiste dem
* 2D-Array hinzu.
* @parameter argEingabe Das
* 2D-Array,in dem die kisten gespeichert werden.
*/

//Eingabe einer neuen Kiste
static void eingabe(int[][] argEingabe) {
int nummer = eingabeKistennummer();
int breite, länge, höhe;


//Wenn Kistennummer gültig und noch nicht vergeben
if (argEingabe[nummer-1][0] == 0) {

//Nummer der Kiste zuweisen
argEingabe[nummer-1][0] = nummer;





//Werte Einlesen
breite=
Integer.parseInt(JOptionPane.showInputDialog("Kistenbreite"));
argEingabe[nummer-1][1]=breite;
länge=
Integer.parseInt(JOptionPane.showInputDialog("Kistenlänge"));
argEingabe[nummer-1][2]=länge;
höhe=
Integer.parseInt(JOptionPane.showInputDialog("Kistenhöhe"));
argEingabe[nummer-1][3]=höhe;


{
System.out.println("Die Kistennummer ist schon vergeben");
}
}
}
/*Löscht eine vorhandene Kiste
* aus dem 2d-Array,und Überprüft ob die zu löschende Kiste vorhanden ist.
*/

//Das Löschen einer Kiste
static void löschen(int[][] argLöschen) {
int nummer = eingabeKistennummer();


//Kontrolle ob die Kistennummer mit einer bereits gespeicherten
//Kiste übereinstimmt
if (argLöschen[nummer-1][0]!=0)
//Setzt die Kisten nummer auf 0 zum Löschen der Kiste
{argLöschen[nummer-1][0] = 0;


}else {
System.out.println("Die Kistennummer " +nummer +" ist nicht bekannt");
}
}

/*Ändert die Daten von einer Kiste
* die im 2D-Array vorhanden ist.
*/

//Das Ändern von Daten einer Kiste
static void ändern(int[][] argÄndern) {
int nummer = eingabeKistennummer();
int breite = 0 , länge, höhe;

//KIstennummer eingeben
do {
nummer= eingabeKistennummer();


//Kontrolle ob die Kistennummer mit einer bereits gespeicherten
//Kiste übereinstimmt
if (nummer>0 && nummer<=argÄndern.length)
if (argÄndern[nummer-1][0] !=0)

//Werte Einlesen

breite=
Integer.parseInt(JOptionPane.showInputDialog("Kistenbreite"));
argÄndern[nummer-1][1]=breite;

länge=Integer.parseInt(JOptionPane.showInputDialog("Kistenlänge"));
argÄndern[nummer-1][2] = länge;

höhe=Integer.parseInt(JOptionPane.showInputDialog("Kistenhöhe"));
argÄndern[nummer-1][3] = höhe;


{
{
System.out.println("Die Kistennummer ist ungültig oder schon vergeben");
}
}
} while (nummer<=0 || nummer>=argÄndern.length);
}

//Anzeigen der Daten einer Kiste

static void anzeigen(int[][]argAnzeigen) {
int nummer;
nummer=Integer.parseInt(JOptionPane.showInputDialog("Geben Sie eine vorhandene Kistennummer ein"));
for(int i=0; i<argAnzeigen.length; i++) {
if(nummer>0 && nummer<=argAnzeigen.length && argAnzeigen[0] == nummer) {
System.out.println("Die Daten der Kiste sind "+Arrays.toString(argAnzeigen));
return;
}
}
System.out.println("Die Kistennummer " +nummer + " ist nicht bekannt.");
}

//Anzeigen der Daten aller Kisten

static void gesamtListe (int[][]gesamtListe) {
for (int kistenIndex =0;kistenIndex < gesamtListe.length; kistenIndex++) {
if(gesamtListe[kistenIndex][0] == 0) {
continue;
}
for (int detailsIndex=0; detailsIndex<gesamtListe[kistenIndex].length; detailsIndex++) {
System.out.println(gesamtListe[kistenIndex][detailsIndex]);
}
}
}

public static void main(String[] args) {

//Vereinbarung des Arrays
//Ein 2D-Array das 75 Kisten beinhaltet und 4reihen aufweist.
int[][] kistenArray = new int[75][4];

//Auswahl der Funktionen
//Hier kann der Benutzer zwischen mehreren funktionen wählen.
String funktionEinlesen;

char funktion;

System.out.println("Sie haben Folgende Funktionen zur Auswahl:");
System.out.println("A Eingabe einer neuen Kiste.");
System.out.println("B Löschen der Daten einer Kiste.");
System.out.println("C Ändern der Daten einer Kiste.");
System.out.println("D Daten einer Kiste anzeigen.");
System.out.println("E Daten aller Kisten anzeigen.");


funktionEinlesen=JOptionPane.showInputDialog("Bitte wählen sie eine Funktion.");
funktion = funktionEinlesen.charAt(0);

//Auswahl auswerten

switch(funktion) {

case 'a':
case 'A':
System.out.println("Sie haben eine neue Kiste eingegeben.");
eingabe(kistenArray);
break;
case 'b':
case 'B':
System.out.println("Sie haben löschen einer Kiste gewählt.");
löschen(kistenArray);
break;
case 'c':
case 'C':
System.out.println("Sie haben ändern einer Kiste gewählt.");
ändern(kistenArray);
break;
case 'd':
case 'D':
System.out.println("Sie haben Datenanzeigen einer Kiste gewählt.");
anzeigen(kistenArray);
break;
case 'e':
case 'E':
System.out.println("Sie haben Datenanzeigen aller Kisten gewählt.");
gesamtListe(kistenArray);
break;

}
System.exit(0);
}
}
 
Code bitte immer in Code Tags posten - dazu einfach den Knopf </> links oberhalb des Eingabebereiches nutzen.

Was genau interessiert Dich denn? Verbessern kann man einiges:

- Java Namenskonventionen könnte man einhalten (Wobei das teilweise ggf. vorgegeben wurde vermute ich).

- Das ist natürlich noch nicht objektorientiert, aber das dürfte daran liegen, dass dies noch nicht so durchgenommen wurde.

- Bezeichner sollte man ohne Umlaute haben. Also kein äöüß oder so in Bezeichnern wie Methoden.

- magic Numbers - an wie vielen Stellen musst Du die Anzahl der Kisten ändern, wenn diese geändert werden müssten? Das nur als ein Beispiel, wo man eine Konstante nehmen sollte.

- unnötige Kommentare. Beispiel:
Java:
    //Eingabe einer gültigen Kistennummer
    static int eingabeKistennummer() {

kann man einfach zu folgender Methode machen:
Java:
    static int eingabeGueltigeKistennummer() {
Dann braucht es den Kommentar schon nicht mehr!

oder:
Code:
//Wenn Kistennummer gültig und noch nicht vergeben
        if (argEingabe[nummer-1][0] == 0) {
Mit einer zusätzlichen Methode machen:
if(kistennummerGueltigUndNichVergeben(argEingabe, nummer)) {

- Kein korrekter JavaDoc - es macht durchaus Sinn, JavaDoc zu verwenden.
Beispiel:
Java:
    /* Fügt eine neue Kiste dem
     * 2D-Array hinzu.
     * @parameter argEingabe Das
     * 2D-Array,in dem die kisten gespeichert werden.
     */

    //Eingabe einer neuen Kiste
    static void eingabe(int[][] argEingabe) {

Java:
    /**
     * Fügt eine neue Kiste dem 2D-Array hinzu.
     * @param argEingabe Das 2DArray mit den Kisten.
     */
    static void eingabeNeueKiste(int[][] argEingabe) {

Das wäre so ein erstes Feedback ganz auf die Schnelle.

Edit: Es fehlte eine ) in einem Stück Code.
 
Was ist zu Verbessern an diesem Code?
Wie @KonradN schon schrieb: da musst Du etwas konkreter werden. Verbessern kann man am Code praktisch immer etwas (zumal das z. T. auch eine subjektive Angelegenheit ist).

Zusätzlich zu den Punkten, die Konrad bereits genannt hat (in diese Richtung gäbe es noch einiges zu sagen):

Der Code funktioniert nicht richitg. Bei eingabe() wird z. B. nach der Eingabe ausgegeben, dass die Kistennummer schon vergeben ist. Da fehlt wohl ein else. Analog bei aendern(). Dort wird der Benutzer zu Beginn zweimal hintereinander zur Eingabe der Kistennummer aufgefordert: einmal bei der Initialisierung der Variable nummer und einmal in der do-while-Schleife.

Dann hast Du überflüssige Prüfungen drin: eingabeKistennummer() stellt sicher, dass die Eingabe zwischen 1 und 75 (beide inkl.) liegt. Das brauchst Du dann natürlich nicht noch einmal abprüfen (wie z. B. in loeschen()) und natürlich kann damit auch die Schleife raus.
 
Zusätzlich ist der Compiler (Interpreter, Transpiler,...) die letztlich entscheidende Instanz, was formell korrekter Code ist. Auf menschlicher Seite machen Dinge wie Codelesbarkeit, Aufteilung in Schichten, TDD, Algorithmen, Datenstrukturen,... Sinn um das Ändern/Erweitern... des Codes zu erleichtern.
 
Java:
import java.util.Arrays;
import javax.swing.*;
   /**Diese Klasse enthält Methoden zur Verwaltung von Kisten
   * Die Kisten werden in einem 2D-Array gespeichert, wobei jede
   * Kiste durch ihre Nummer, Breite, Länge,Höhe representiert wird
   */

public class Java04d_einsend_01 {

    
    //Eingabe einer gültigen Kistennummer
    static int eingabeKistennummer() {
    int nummer;
    do {
        
        nummer =
    Integer.parseInt(JOptionPane.showInputDialog("Geben Sie bitte eine Kistennummer ein von (1-75)"));
        if (nummer <= 0 ||  nummer >75) {
            System.out.println("Die Kistennummer ist üngültig");
        }
    }while (nummer <= 0 || nummer > 75);
    return nummer;
    }
    
    /* Fügt eine neue Kiste dem
     * 2D-Array hinzu.
     * @parameter argEingabe Das
     * 2D-Array,in dem die kisten gespeichert werden.
     */
    
    //Eingabe einer neuen Kiste
    static void eingabe(int[][] argEingabe) {
    int nummer = eingabeKistennummer();
    int breite, länge, höhe;
    
  
     //Wenn Kistennummer gültig und noch nicht vergeben
    if (argEingabe[nummer-1][0] == 0) {
        
    //Nummer der Kiste zuweisen
    argEingabe[nummer-1][0] = nummer;   
    
  
    
    
    
    //Werte Einlesen
    breite=
    Integer.parseInt(JOptionPane.showInputDialog("Kistenbreite"));
    argEingabe[nummer-1][1]=breite;
    länge=
    Integer.parseInt(JOptionPane.showInputDialog("Kistenlänge"));
    argEingabe[nummer-1][2]=länge;
    höhe=
    Integer.parseInt(JOptionPane.showInputDialog("Kistenhöhe"));
    argEingabe[nummer-1][3]=höhe;
 
    
      {
      System.out.println("Die Kistennummer ist schon vergeben");
      }
    }
    }
    /*Löscht eine vorhandene Kiste
     * aus dem 2d-Array,und Überprüft ob die zu löschende Kiste vorhanden ist.
     */
    
    //Das Löschen einer Kiste
    static void löschen(int[][] argLöschen) {
    int nummer = eingabeKistennummer();
    
    
    //Kontrolle ob die Kistennummer mit einer bereits gespeicherten
    //Kiste übereinstimmt
    if (argLöschen[nummer-1][0]!=0)
        //Setzt die Kisten nummer auf 0 zum Löschen der Kiste
    {argLöschen[nummer-1][0] = 0;
        
  
    }else {
        System.out.println("Die Kistennummer " +nummer +" ist nicht bekannt");     
        }
    }
    
    /*Ändert die Daten von einer Kiste
     * die im 2D-Array vorhanden ist.
     */
    
    //Das Ändern von Daten einer Kiste
    static void ändern(int[][] argÄndern) {
    int nummer = eingabeKistennummer();
    int breite = 0 , länge, höhe;
    
    //KIstennummer eingeben
    do {
        nummer= eingabeKistennummer();
        
        
    //Kontrolle ob die Kistennummer mit einer bereits gespeicherten
    //Kiste übereinstimmt
    if (nummer>0 && nummer<=argÄndern.length)
    if (argÄndern[nummer-1][0] !=0)
        
    //Werte Einlesen
        
    breite=
    Integer.parseInt(JOptionPane.showInputDialog("Kistenbreite"));
    argÄndern[nummer-1][1]=breite;
    
    länge=Integer.parseInt(JOptionPane.showInputDialog("Kistenlänge"));
    argÄndern[nummer-1][2] = länge;
    
    höhe=Integer.parseInt(JOptionPane.showInputDialog("Kistenhöhe"));
    argÄndern[nummer-1][3] = höhe;
    
    
    {
     {
        System.out.println("Die Kistennummer ist ungültig oder schon vergeben");     
        }
    }
    } while  (nummer<=0 || nummer>=argÄndern.length);
    }
    
    //Anzeigen der Daten einer Kiste
    
    static void anzeigen(int[][]argAnzeigen) {
    int nummer;
    nummer=Integer.parseInt(JOptionPane.showInputDialog("Geben Sie eine vorhandene Kistennummer ein"));
    for(int i=0; i<argAnzeigen.length; i++) {
    if(nummer>0 && nummer<=argAnzeigen.length && argAnzeigen[i][0] == nummer) {
        System.out.println("Die Daten der Kiste sind "+Arrays.toString(argAnzeigen[i]));
        return;
       }
    }
        System.out.println("Die Kistennummer " +nummer + " ist nicht bekannt.");
    }
    
    //Anzeigen der Daten aller Kisten
    
    static void gesamtListe (int[][]gesamtListe) {
    for (int kistenIndex =0;kistenIndex < gesamtListe.length; kistenIndex++) {
    if(gesamtListe[kistenIndex][0] == 0) {
    continue;
        }
    for (int detailsIndex=0; detailsIndex<gesamtListe[kistenIndex].length; detailsIndex++) {
        System.out.println(gesamtListe[kistenIndex][detailsIndex]);
        }
        }
    }
    
    public static void main(String[] args) {
      
    //Vereinbarung des Arrays
    //Ein 2D-Array das 75 Kisten beinhaltet und 4reihen aufweist.
    int[][] kistenArray = new int[75][4];
        
    //Auswahl der Funktionen
    //Hier kann der Benutzer zwischen mehreren funktionen wählen.
    String funktionEinlesen;
    
    char funktion;
    
    System.out.println("Sie haben Folgende Funktionen zur Auswahl:");
    System.out.println("A  Eingabe einer neuen Kiste.");
    System.out.println("B  Löschen der Daten einer Kiste.");
    System.out.println("C  Ändern der Daten einer Kiste.");
    System.out.println("D  Daten einer Kiste anzeigen.");
    System.out.println("E  Daten aller Kisten anzeigen.");
    
    
    funktionEinlesen=JOptionPane.showInputDialog("Bitte wählen sie eine Funktion.");
    funktion = funktionEinlesen.charAt(0);
    
    //Auswahl auswerten
    
    switch(funktion) {
    
    case 'a':
    case 'A':
        System.out.println("Sie haben eine neue Kiste eingegeben.");
        eingabe(kistenArray);
        break;
    case 'b':
    case 'B':
        System.out.println("Sie haben löschen einer Kiste gewählt.");
        löschen(kistenArray);
        break;
    case 'c':
    case 'C':
        System.out.println("Sie haben ändern einer Kiste gewählt.");
        ändern(kistenArray);
        break;
    case 'd':
    case 'D':
        System.out.println("Sie haben Datenanzeigen einer Kiste gewählt.");
        anzeigen(kistenArray);
        break;
    case 'e':
    case 'E':
        System.out.println("Sie haben Datenanzeigen aller Kisten gewählt.");
        gesamtListe(kistenArray);
        break;
        
     }
    System.exit(0);
    }
    }

Ok ich habe jetzt den Code nochmal hoffentlich etwas lesbarer reingestellt.
Sagt man das so weis nicht?
Vielen dank für die antworten die ihr mir gegeben habt.
Ich mache ja auch dieses Fernstudium und die Aufgabe ist ,dieses Programm(Lagerverwaltung) zu schreiben.
Leider fühl ich mich etwas alleine gelassen da der Tutor nicht direkt auf fragen antwortet.
Das soll jetzt kein mimimimi sein; ich weis worauf ich mich eingelassen habe und werde es auch durchziehen.
Doch ist es halt als blutiger Anfänger oft nicht Verständlich was verlangt wird.
Also ich merke ich muss einiges nochmal nachlesen.
Würde es den helfen wenn ich alles nacheinander Programmiere zum Beispiel erst eine Kiste eingeben und dann ausgeben lass.
Dann Kiste Loeschen usw?
 
Er Antwortet ja leider nur immer ein paar Tage später und das nervt bischen weil ich will ja voran kommen!
Ich danke euch auf jeden Fall für die Tipps.
Ich werde nochmal ein paar Kapitel nachlesen und dann wird das schon!!!
 
"Ein paar Tage" sind witzlos, besprich das mit deinem Tutor und wenn sich nichts ändert wende dich an einen höheren ..
Bezahlst du das Studium oder ein Arbeitgeber?
 
Ich bezahle es! Sitz abends nach meiner Arbeit am Rechner und lerne, bin ein absoluter Anfänger und ja ich weis es ist nicht leicht für jemand der nichts mit IT zu tun hat aber das entmutigt mich nicht auch wenn es 10 Jahre dauert ich bleibe dran.
 
also das ist kein zustand ...geh direkt zum Tutor und sag ihm dass das nicht so weiter gehen kann, wenn es nichts bewirkt dann gehst du entweder an den service der immer da ist und beschwerst dich da oder gehst eine stufe höher

in meinem studiengang waren beschwerden immer so aufgebaut

Prof => studien gangs leiter => dekan

"Ein paar Tage" kann ich mir gut so vorstellen:

Fachbereich: "Hey Server ist down, SQL Datenbank ist voll, die hütte brennt ansich mach mal was"
Admins: "Alles klärchen, null problemo, wir sehen uns in einer Woche, dann schauen wir uns das vllt mal an"
 
wenn du eine IDE hast dann finde heraus wie man den code formatiert da die Code formatierung sehr zerschossen aussieht

wenn du keine IDE hast dann hol dir eine entweder die kostenlose Intellij version oder Eclipse aber Eclipse ist eher etwas "wuchtig" für anfänger
 
Dann zu deinem Code noch zusätzlich hast du das nicht umgesetzt ws konrad dir geschrieben hat
Beim programmieren teilst du alles in mini probleme auf die du lösen kannst und mit garantie sagen kannst "das ist geil so wie es ist"

zb
Java:
    breite=
    Integer.parseInt(JOptionPane.showInputDialog("Kistenbreite"));
    argEingabe[nummer-1][1]=breite;
    länge=
    Integer.parseInt(JOptionPane.showInputDialog("Kistenlänge"));
    argEingabe[nummer-1][2]=länge;
    höhe=
    Integer.parseInt(JOptionPane.showInputDialog("Kistenhöhe"));
    argEingabe[nummer-1][3]=höhe;
das copy pasten geht doch auf die nerven
Code:
// hat die Nachricht des JPanels als Parameter
public static int GetIntegerInput(String message){
    // Fragt nach User input mit der Nachricht und gibt den Wert zurück
    return Integer.parseInt(JOptionPane.showInputDialog("Kistenbreite"));
}
// wird so hergenommen
argEingabe[nummer-1][2]= getIntegerInput("Kistenlänge");
wenn du irgendwo anders im code was änderst dann wird
1. nichts an dieser methode zerbrechen
2. der Inhalt der methode ist übersichtlich
3. du kannst einfach auf eine andere GUI wechseln da das JOptionPane nur einmal vorkommt
4. man kann ganz einfach den "Bug" finden, man muss ja nur ein paar zeilen code durch schauen
5. und vieles mehr
 
Also da man nicht weiss, was genau für Vereinbarungen getroffen wurde ist natürlich keine Aussage zu treffen. Ein Anspruch a.la. "Ich schreibe eine Email und der Andere hat zu springen" ist aber natürlich nicht realistisch. Ein gewisser zeitlicher Verzug ist also normal. Und "ein paar Tage später" kann dann durchaus realistisch sein. So ein Tutor wird mehrere Aufgaben haben.

Mich wundert eh, dass sich Studenten nicht viel mehr zusammen tun. Mit der Technologie heute ist doch so viel möglich. In meiner Studienzeit war es vollkommen normal, dass man sich auch zu Lerngruppen zusammen getan hat und man generell in einem regen Austausch war.

@Digital DEC Du hast aber jetzt auch eine weitere Quelle für Antworten gefunden. Es liegt an Dir, dies auch zu nutzen. Tipps und Hinweise geben wir hier gerne. Und diese Kistenaufgabe ist hier schon in vielen Thread behandelt worden - da lohnt ggf. auch eine Suche.

Und ansonsten ist es generell wichtig, sich mit Google & Co vertraut zu machen. Es gibt im Netz extrem viele Informationen. Alleine die ganzen Stackoverflow (kurz oft einfach SO genannt) sind eine wahre Fundgrube an Wissen bei konkreten Problemen!

Bezüglich Antworten in diesem Forum:
Ich erachte es als wichtig, dass man denen, die ihre Zeit investieren um Dir zu helfen, eine Rückmeldung gibt. Diese kann diverse Formen haben:
a) Am schönsten ist es, wenn Hinweise aufgegriffen, verstanden und umgesetzt wurden.
b) Wenn etwas nicht verstanden wurde, dann einfach nachfragen.
c) Wenn ein Hinweis verstanden aber für einen nicht interessant ist, dann kann dies auch problemlos gesagt werden.

Mir fehlt das etwas und ich weiss daher schlicht nicht, wo ich da weiter helfen kann. Ich könnte erneut Kommentare zu dem Code schreiben. Aber macht es Sinn, noch weitere, neue Punkt zu bringen wenn die alten bisher nicht umgesetzt sind? Soll ich die alten Punkte wiederholen? Soll ich diese weiter ausführen? Ich weiss es einfach nicht.
 
@KonradN
Ich wollte ihnen nicht auf die Füße treten, indem ich nicht auf ihre Antwort reagiert habe.
Den Code hatte ich zur Besseren Veranschaulichung nochmal so reingestellt wie es verlangt wurde. ohne Verbesserung.
ich dachte ich hätte mich für die Tipps bedankt. Falls das nicht der fall war dann vielen dank @KonradN . Ich Versuche das Um zusetzten was sie mir Gesagt haben. Bin dabei. Es ist für mich nicht alles verständlich deshalb gehe ich auch nochmal ein paar Kapitel von meinen studienheften durch.
Was ich einfach nicht hinbekomme ist das ganze als 1 Code zu Verstehen. Für mich sind das viele Puzzle teile die irgendwie nicht passen und ich Weiß einfach nicht wie ich sie zusammenfügen kann.
Das schüchtert mich bischen ein.
 
@Wuast
Also bei der SGD wo ich das Fernstudium mache hatte ich bereits nach einer Lerngruppe gefragt leider ohne Erfolg.
Und auch bei mir ist es schwierig mit den Arbeitszeiten da ich meistens erst ab 22Uhr am lernen bin.
Machst du auch ein Fernstudium? Oder bist du schon fertig?
 
Alles ok, mir war nur nicht klar, dass du es nur ohne Verbesserungen eingestellt hast und die Punkte noch weiter anschaust. Ansonsten duzen wir usn hier und das kannst Du auch gerne machen.

Was ich einfach nicht hinbekomme ist das ganze als 1 Code zu Verstehen. Für mich sind das viele Puzzle teile die irgendwie nicht passen und ich Weiß einfach nicht wie ich sie zusammenfügen kann.
Das schüchtert mich bischen ein.
Wenn Du das etwas mehr in Worte fassen kannst. Wir sind sehr gerne bereit zu helfen und erläutern Dir die Punkte sehr gerne. Die Ansatzpunkte sind mir nur eben nicht klar.

Aber interessant - dann kommt diese Aufgabe von sgd - wir sehen diese Kistenaufgabe nun einmal regelmäßig.
 
Da ich die Qualität der Lehrbriefe nicht kenne: Evtl. macht es da dann Sinn, noch weitere Quellen zu nutzen. Zu Java gibt es sehr gute Bücher - "Java von Kopf bis Fuss" wird hier im Forum bezüglich Java immer wieder gerne empfohlen.

Die reine Sprache Java wird so so bestimmt gut lernen lassen. Das wird nicht bei allen Themen unbedingt so gehen, aber in der Regel sollte es zu allem gute Fachliteratur gerben.
 
Es fällt mir tatsächlich etwas schwer das auszudrücken:
Ich versuche es mal
vieleicht hilft es ja Step 4 Step
Warum zeigt er mir hier nicht an das ich zB die kistennumer 4 Gewählt habe?
Java:
    // Eingabe einer gültigen Kistennummer
    static int eingabeGueltigeKistennummer() {
        int nummer;
        do {

            nummer = Integer.parseInt(JOptionPane.showInputDialog("Geben Sie bitte eine Kistennummer ein von (1-75)"));
            if (nummer <= 0 || nummer > 75) {
                System.out.println("Die Kistennummer ist üngültig");
            }
        } while (nummer <= 0 || nummer > 75);
        return nummer;
    }
 
Dort hast Du ja keine Anzeige wenn etwas gewählt wurde. Vor dem return könntest Du sowas einbauen:

(Der Auszug sähe dann so aus - nur die Zeile davor und danach habe ich gelassen.)
Java:
        } while (nummer <= 0 || nummer > 75);
        System.out.println("Sie haben die Kiste Nummer " + nummer + " gewählt!");
        return nummer;
 
vieleicht hilft es ja Step 4 Step
Das ist übrigens vielleicht ein guter Zeitpunkt, sich mit dem Debugger der IDE vertraut zu machen, um den Code "step by step" nachzuvollziehen.

Theoretisch (und auch praktisch) funktioniert das auch mit "Zettel und Stift", ist halt ggf. etwas mehr Aufwand. Natürlich könntest Du den Code auch am Rechner per Kommentare nachvollziehen:
Java:
    // Eingabe einer gültigen Kistennummer
    static int eingabeGueltigeKistennummer() {
        int nummer; // deklariere eine int-Variable mit dem Bezeichner nummer
        do {
            // Frage Benutzer nach Eingabe, wandle diese in ein int um und lege das Ergebnis in nummer ab
            nummer = Integer.parseInt(JOptionPane.showInputDialog("Geben Sie bitte eine Kistennummer ein von (1-75)"));

            // Falls die Nummer ausserhalb des gültigen Bereichs liegt
            if (nummer <= 0 || nummer > 75) {
                // gib eine Fehlermeldung aus
                System.out.println("Die Kistennummer ist üngültig");
            }

            // an der Stelle kann nummer gültig und ungültig sein
            // daher: Wiederholung, so lange nummer ungültig ist
        } while (nummer <= 0 || nummer > 75);

        // an der Stelle kann nummer nur gültig sein
        // die gültige nummer wird zurückgegeben
        return nummer;
    }
 
Hallo Zusammen
Also das mit Eingabe einer neuen Kiste und das löschen einer Kiste funktioniert wunderbar .
An der stelle Möchte ich allen einen dank aussprechen für die hilfe.
@KonradN dir vor allem!!!
Ich werde mich jetzt an den rest machen und schauen wie weit ich komme
Vielen dank nochmal
 

Zurück
Oben