www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

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:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
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.vorhilfe.de