matheraum.de
Raum für Mathematik
Offene Informations- und Nachhilfegemeinschaft

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Mathe
  Status Schulmathe
    Status Primarstufe
    Status Mathe Klassen 5-7
    Status Mathe Klassen 8-10
    Status Oberstufenmathe
    Status Mathe-Wettbewerbe
    Status Sonstiges
  Status Hochschulmathe
    Status Uni-Analysis
    Status Uni-Lin. Algebra
    Status Algebra+Zahlentheo.
    Status Diskrete Mathematik
    Status Fachdidaktik
    Status Finanz+Versicherung
    Status Logik+Mengenlehre
    Status Numerik
    Status Uni-Stochastik
    Status Topologie+Geometrie
    Status Uni-Sonstiges
  Status Mathe-Vorkurse
    Status Organisatorisches
    Status Schule
    Status Universität
  Status Mathe-Software
    Status Derive
    Status DynaGeo
    Status FunkyPlot
    Status GeoGebra
    Status LaTeX
    Status Maple
    Status MathCad
    Status Mathematica
    Status Matlab
    Status Maxima
    Status MuPad
    Status Taschenrechner

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Dt. Schulen im Ausland: Mathe-Seiten:Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenJavaXML Speicherung und ArrayList
Foren für weitere Studienfächer findest Du auf www.vorhilfe.de z.B. Astronomie • Medizin • Elektrotechnik • Maschinenbau • Bauingenieurwesen • Jura • Psychologie • Geowissenschaften
Forum "Java" - XML Speicherung und ArrayList
XML Speicherung und ArrayList < Java < Programmiersprachen < Praxis < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Java"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

XML Speicherung und ArrayList: Tipp
Status: (Frage) für Interessierte Status 
Datum: 13:39 Sa 05.02.2011
Autor: juel

Aufgabe
(An die Profis)

Hallo Zusammen,

ich hab ein Problem beim Quelltext schreib.
und am Montag ist auch schon die Klausur.
Das Programm läuft einwandfrei, allerdings habe ich gestern erst ein Fehler entdeckt, und hab den ganzen Tag mit Programmieren verbracht, ich konnte es nicht hinbekommen. Ich total am verzweifeln, weiß nicht mehr weiter.
Deshalb wäre es sehr nett, wenn mir jemand helfen würde :(

Das Programm läuft folgendermaßen ab:
Ein Händler betreibt einen Goldankauf und -verkauf. Er möchte, dass sein Programm Kunden anlegt (id,name,vorname,tel.,adresse),alle Kunden anzeigt, Kunden löscht, Artikel kauft(id,artikelname,goldreinheit,gramm,ankaufspreis,verkaufspreis,anzahl), Artikel verkauft, alle Artikel anzeigt, bestimmten Artikel sucht, usw.

Neun Artikel und vier Kunden sind bereits im Quelltext  als initData()  angelegt.

[red]Zu meinem Problem:

Wenn ich das Programm starte und mir alle Artikel anzeigen lasse, dann zeigt er mir alle 9 Artikel (vom Quelltext) an, beginnend mit der ID 1000 und der letzte Artikel hat dann ID 1008.
Anschließend kaufe ich ein Artikel. Als Element wird er dann in der ArrayListe gespeichert und wenn ich nochmal alle Artikel anschaue, hat der letzte Artikel ID 1009. Damit bin ich zufrieden. Dann kaufe ich noch ein Artikel, letzter Artikel ID 1010. ok
Ich beende das Programm.
Aber dann........ Wenn ich das Programm wieder starte, und alle Daten aus XML lade, mir danach alle Artikel anzeigen lasse, stehen die zuletzt angelegten Artikel da, letzter Artikel ID 1010. Wenn ich aber ein Artikel anschließend kaufe, steht in meiner Artikelliste letzter Artikel ID 1009 und der zweitletzte Artikel ID 1010.

Waaaaaaaaaaaarum????????? ich versteh es nicht.


ich habe ein paar Ausschnitte aus dem Quelltext herausgenommen, ich denke mal das sind die wichtigsten.

Vielleicht erkennt ihr den Fehler oder eine Lücke wo etwas fehlt, damit das Programm auch richtig funktioniert.....

Danke im Voraus

[red]//für die XML speicherung

private void saveDataToXML() throws IOException
    {
        XMLEncoder o = new XMLEncoder(new FileOutputStream("Gold.xml"));
        o.writeObject("Gold-Ankauf und -Verkauf");
        o.writeObject(this);
        o.close();
    }

[red]// für das Laden aus XML

public Object loadDataFromXML() throws IOException
    {
        XMLDecoder o = new XMLDecoder(new FileInputStream("Gold.xml"));
        o.readObject();
        Object obj = o.readObject();
        o.close();
        return obj;
    }

[red]// Methode speichert

private void save()
    {
        try
        {
            saveDataToXML();
            [mm] System.out.println('\n'+"GESPEICHERT!" +'\n'); [/mm]
        }
        catch(java.io.IOException ioe)
        {
            ioe.printStackTrace();
        }
    }

[red]// Methode ladet

private void load()
    {
        try
        {
            VERWALTUNG v = (VERWALTUNG) loadDataFromXML();
            // hier starten wir ein neues Programm (eine neue Instanz der Klasse Verwaltung, der wir auch die Kontrolle übergeben), damit wir an die geladenen Daten kommen
            [mm] System.out.println('\n'+"GELADEN!" +'\n'); [/mm]
            v.mainMenue();

        }
        catch(java.io.IOException ioe)
        {
            ioe.printStackTrace();
        }
    }

[red]//  Methode Artikel kaufen

private void kaufeGoldartikel()
    {
        boolean artikelpruefung = false;
        String artikelname;
        boolean goldtypnrpruefung = false;
        String goldtypnr;
        double gewicht =0.0;
        int anzahl=0;
        boolean treffer = false;
        Goldtyp goldtyp = null;
        double f=0;
        char eingabe;
        boolean menuewechsel=false;
        boolean jetztkaufen=false;
        
        do       // liesst wiederholend artikelname, solange bis die Bedingung erfüllt wird
        {
            artikelname = [mm] Stdin.readString('\n'+"Bitte [/mm] geben Sie hier den Artikelnamen ein : ");
            artikelpruefung = pruefeArtikelname(artikelname);
        } while (!artikelpruefung);

        
        do        // liesst wiederholend goldtypnr, solange Bedingung wahr ist
        {          
            goldtypnr = Stdin.readString("Bitte geben Sie die [1] fuer Goldtyp 333, [2] fuer Goldtyp 555, [3] fuer 777 : ");
            goldtypnrpruefung = pruefeGoldtypnr(goldtypnr);
        } while (!goldtypnrpruefung);

        
        artikelpruefung = false;
        do        // liesst wiederholend gewicht, solange Bedingung wahr ist
        {
            try
            {
                gewicht = Stdin.readlnDouble("Bitte geben Sie hier das Gewicht ein : ");
                artikelpruefung = true;
            }
            catch(Exception e)
            {
                System.out.println("Es ist ein Fehler passiert: " + e.getMessage());
                artikelpruefung = false;
            }
        }while((!artikelpruefung));

        do         // liesst wiederholend anzahl, solange Bedingung wahr ist
        {
            try
            {
                anzahl = Stdin.readlnInt("Bitte geben Sie hier die Anzahl ein : ");
                artikelpruefung = true;
            }
            catch(Exception e) {
                System.out.println("Es ist ein Fehler passiert: " + e.getMessage());
                artikelpruefung = false;
            }
        }while((!artikelpruefung));

        // Schleife, die die Eingabe fuer den Goldtyp (333,555 bzw.777)im Untermenue von "Goldartikel kaufen" prueft und zuordnet
        if (goldtypnr.equals("1"))
        {
            goldtyp = Goldtyp.q333;
            f = Goldtyp.q333.faktor;
        }
        if (goldtypnr.equals("2"))
        {
            goldtyp = Goldtyp.q555;
            f = Goldtyp.q555.faktor;
        }
        if (goldtypnr.equals("3"))
        {
            goldtyp = Goldtyp.q777;
            f = Goldtyp.q777.faktor;
        }

        System.out.println( [mm] '\n' [/mm] +"Ankaufspreis betraegt: "+ castDouble2String(gewicht*anzahl*f*ankpreis333)+" Euro insgasamt  und  "+castDouble2String(gewicht*f*ankpreis333)+"  Euro pro [mm] Stueck"+'\n'); [/mm]

        do          // durchlauft die Schleife, solange Bedingung wahr ist (oben menuewechsel als false deklariert)
        {
            System.out.println("[1] Fuer Artikel kaufen");
            System.out.println("[0] Goldartikelmenue");

            printAuswahlTreffen();
            // hierdurch soll das Programm trotz Falscheigabe weiterlaufen und nicht abstuerzen
            try
            {
                eingabe = Stdin.readlnChar();
            }
            catch (Exception ex)
            {
                eingabe = 'a';
            }

            switch (eingabe)
            {
                case '0': menuewechsel = true;
                [mm] System.out.println('\n' [/mm] + "Artikel wurde nicht [mm] gekauft."+'\n'); [/mm]
                break;
                case '1': jetztkaufen = true;
                menuewechsel = true;
                break;
                default: printEingabeFehler();
            }

            if(jetztkaufen==true)      // Schleife prueft welcher Artikelname eingegeben wurde und ordnet ihn zu.
            {

                if (artikelname.equals("Ohrring"))
                {

                    Ohrring ohr1 = new Ohrring(artikelname, gewicht,  goldtyp, anzahl);
                    goldartikelListe.add(ohr1);
                    System.out.println( [mm] '\n'+"Artikel [/mm] wurde gekauft!   Anzahl: "+anzahl+" Stueck"+ ",    Ankaufspreis: "+castDouble2String(gewicht*anzahl*f*ankpreis333)+" [mm] Euro"+'\n'); [/mm]

                }    

                if (artikelname.equals("Halskette"))
                {

                    Halskette h1 = new Halskette(artikelname, gewicht, goldtyp, anzahl);
                    goldartikelListe.add(h1);
                    [mm] System.out.println('\n'+"Artikel [/mm] wurde gekauft!   Anzahl: "+anzahl+" Stueck"+ ",    Ankaufspreis: "+castDouble2String(gewicht*anzahl*f*ankpreis333)+" [mm] Euro"+'\n'); [/mm]

                }      

                if (artikelname.equals("Ring"))
                {

                    Ring r1 = new Ring(artikelname, gewicht, goldtyp, anzahl);
                    goldartikelListe.add(r1);
                    [mm] System.out.println('\n'+"Artikel [/mm] wurde gekauft!   Anzahl: "+anzahl+" Stueck"+ ",    Ankaufspreis: "+castDouble2String(gewicht*anzahl*f*ankpreis333)+" [mm] Euro"+'\n'); [/mm]

                }  

            }

        } while (!menuewechsel);

    }

[red]// main Methode

public static void main(String[] args)
    {
        VERWALTUNG v = new VERWALTUNG();

        v.printProgrammInfo();
        v.initData();
        v.load();
      
        v.mainMenue();
    }

        
Bezug
XML Speicherung und ArrayList: erledigt
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 19:11 Sa 05.02.2011
Autor: juel

habe das Problem gefunden und behoben

deshalb auf diese Frage nicht mehr reagieren


Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Java"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.matheraum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]