Attributsausprägung in LinkedList ändern

Hi @all,

ich bin neu hier und bin gerade dabei mir Java beizubringen. Nun bin ich an folgendes Problem geraten, welches ich leider nicht selbst lösen kann. Hier mal mein Quellcode:

 
import java.util.*; 
import Prog1Tools.*; 
 
public class Startklasse { 
 
        public final [String](http://www.google.com/search?q=allinurl%3Astring+java.sun.com&bntl=1)[] MENUEPUNKTE = { "1", "Suche Obst", "2", 
                        "Füge Obst hinzu", "3", "Gebe Obstliste aus", "4", "Lösche Obst", 
                        "x", "Ende" }; 
 
        private static LinkedList<Obst> obstliste = new LinkedList<Obst>(); 
        private static LinkedList<Geschenkkorb> geschenkkorbliste = new LinkedList<Geschenkkorb>(); 
 
        /** 
         * @param args 
         */ 
        public static void main([String](http://www.google.com/search?q=allinurl%3Astring+java.sun.com&bntl=1)[] args) { 
 
                Startklasse startklasse1 = new Startklasse(); 
                 
                //Obst 
                Obst obst1 = new Obst(); 
                obst1.setName("Apfel"); 
                obst1.setFarbe("grün"); 
                obst1.setMenge(1000); 
                obst1.setGewicht(100); 
                obstliste.add(obst1); 
 
                Obst obst2 = new Obst(); 
                obst2.setName("Banane"); 
                obst2.setFarbe("gelb"); 
                obst2.setMenge(750); 
                obst2.setGewicht(150); 
                obstliste.add(obst2); 
                 
                //Geschenkkörbe 
                Geschenkkorb geschenkkorb1 = new Geschenkkorb(); 
                geschenkkorb1.setName("Kleiner Geschenkkorb"); 
                geschenkkorb1.setApfelMenge(2); 
                geschenkkorb1.setBananenMenge(3); 
                geschenkkorbliste.add(geschenkkorb1); 
                 
                Geschenkkorb geschenkkorb2 = new Geschenkkorb(); 
                geschenkkorb2.setName("Großer Geschenkkorb"); 
                geschenkkorb2.setApfelMenge(5); 
                geschenkkorb2.setBananenMenge(7); 
                geschenkkorbliste.add(geschenkkorb2); 
                 
                 
                 
                startklasse1.gebeMenueAus(); 
 
        } 
 
        public void gebeMenueAus() { 
                for (int i = 0; i < MENUEPUNKTE.length; i = i + 2) { 
                        [System](http://www.google.com/search?q=allinurl%3Asystem+java.sun.com&bntl=1).out.println(MENUEPUNKTE** + " - " + MENUEPUNKTE[i + 1]); 
                } 
                [System](http://www.google.com/search?q=allinurl%3Asystem+java.sun.com&bntl=1).out.println("Ihre Wahl?"); 
                verarbeiteBestellung(); 
        } 
 
        private void verarbeiteBestellung() { 
                [String](http://www.google.com/search?q=allinurl%3Astring+java.sun.com&bntl=1) eingabe = IOTools.readString(); 
 
                if (MENUEPUNKTE[0].compareTo(eingabe) == 0) { 
                        sucheObst(); 
                } else if (MENUEPUNKTE[2].compareTo(eingabe) == 0) { 
                        fügeHinzu(); 
                } else if (MENUEPUNKTE[4].compareTo(eingabe) == 0) { 
                        gebeListeAus(); 
                } else if (MENUEPUNKTE[6].compareTo(eingabe) == 0) { 
                        entferneObst(); 
                } else if (MENUEPUNKTE[8].compareTo(eingabe) == 0) { 
                        erstelleGeschenkkorb(); 
                } else if (MENUEPUNKTE[MENUEPUNKTE.length - 2].compareTo(eingabe) == 0) { 
                        beendeProgramm(); 
                } else { 
                        verarbeiteFehleingabeDesUsers(); 
                } 
        } ```Mein Problem dreht sich um die Methode "erstelleGeschenkkorb();" 
```private void erstelleGeschenkkorb() { 
                [System](http://www.google.com/search?q=allinurl%3Asystem+java.sun.com&bntl=1).out.println("Welchen Geschenkkorb wollen Sie erstelln?"); 
                [System](http://www.google.com/search?q=allinurl%3Asystem+java.sun.com&bntl=1).out.println("1 Kleiner Geschenkkorb"); 
                [System](http://www.google.com/search?q=allinurl%3Asystem+java.sun.com&bntl=1).out.println("2 Großer Geschenkkorb"); 
                int auswahl = IOTools.readInt(); 
                 
                if(auswahl==1){ 
                        //was muss hier rein? 
                } 
                else{ 
                        //hier dann das Angeglichene von oben 
                } 
                 
        }
```Ich will, dass nachdem ich einen Geschenkkorb "erstellt" habe, die Anzahl der Äpfel und Bananen in der obstliste anpassen (verfügbare Menge Äpfel - benötigte Menge Äpfel für Geschenkkorb,...). Gibt es hierfür einen (einfachen) Lösungsansatz?

Hi,

haja also bei //was muss hier rein musst du die Details des Obstkorbes einlesen, also wieviele Äpfel usw. er enthalten soll. Dann musst du halt ne Methode aufrufen, die aus den eingelesenen Eingaben einen Korb erstellt und dann die Obstliste anpasst (noch besser wäre es zuerst zu schauen, ob überhaupt genügend Obs vorhanden ist um den Korb zu erstellen aber das ist eine andere Sache).

Dabei hast du halt das Problem, dass du über den Namen des Obstes die Obstliste durchsuchen müsstest, deswegen wäre es praktischer Obstsubklassen (die von der Klasse Obst erben) zu definieren, die dann zur Obsliste hinzugefügt werden.

Is jetzt für nen Anfänger sicher nicht ganz einfach nachzuvollziehen. Wenn du weiter Probleme hast melde dich einfach, dann kann ich dir auch ein Beispiel coden. Sich drüber den Kopf zu zerbrechen ist am Anfang aber immer gut :wink:

Übrigens musst du aufpassen was der Benutzer eingibt. Nutzereingaben sind immer „tainted“ (verseucht). Wenn der Nutzer z.B. einen Buchstaben eingibt kackt dein Programm weg, weil du die Eingabe einer Ganzzahl zuordnest.