myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

laden geht nicht :-(

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 11.02.11, 19:42   #1
Kingler93
Anfänger
 
Registriert seit: Sep 2010
Beiträge: 3
Bedankt: 0
Kingler93 ist noch neu hier! | 0 Respekt Punkte
Standard laden geht nicht :-(

Hey Leutz,

ich habe folgendes Problem:
Ich will mir einen Notizblock in Java programmieren . In diesem Notizblock gibt es zwei ArrayLists (liste und listeGeheim). Nun soll man das ganze auch speichern können, aber nur in einer Datei. Also zwei Listen in eine Datei. Hier meine Lösung:
Beide Listen werden in einer Liste (speicherListe) gespeichert, in der außerdem die Länge der zweiten Liste (listeGeheim) angegeben ist, damit ich sie nachher (beim laden) wieder auseinander wuseln kann^^.
Hier der Quellcode für das speichern:

Code:
try
          {
              speicherListe.addAll(liste);
              speicherListe.addAll(listeGeheim);
              speicherListe.add(String.valueOf(listeGeheim.size()));    //es wird ein String erstellt, der die Länge der Liste "listeGeheim" angibt 
              FileOutputStream output = new FileOutputStream("Notizen.ser");
              ObjectOutputStream outStream = new ObjectOutputStream(output);
              outStream.writeObject(speicherListe);
              outStream.close();
          }
          catch (Exception e)
          {
              System.out.println("Es konnte nicht gespeichert werden.");
          }
Hier der Quellcode für das laden:

Code:
try
        {
            FileInputStream objIn = new FileInputStream("Notizen.ser");
            ObjectInputStream inStream = new ObjectInputStream(objIn);
            ArrayList<String> pListe = (ArrayList<String>) inStream.readObject();
            inStream.close();
            speicherListe.addAll(pListe);
            int i =  Integer.parseInt(speicherListe.get(speicherListe.size()));  // i ist gleich der länge der Liste "listeGeheim" vor dem speichern
            speicherListe.remove(speicherListe.size());
            listeGeheim.addAll((speicherListe.size() - i), speicherListe);  // "listeGeheim" bekommt seine alten Werte zumindest theoretisch^^
            for (int x = speicherListe.size(); x > i; x--) // die Werte von "listeGeheim" werden aus "speicherListe" gelöscht
            {
                speicherListe.remove(x);
            }
            liste.addAll(speicherListe); // "liste" bekommt seine Werte wieder (theoretisch)
            speicherListe.clear(); // "speicherListe" wird auf null gesetzt
        }
        catch (Exception e)
        {
        }
Das Problem ist nun, dass nach dem Laden beide ArrayLists (sowohl "liste" als auch "listeGeheim") leer sind .

Danke schonmal im Vorraus.
Falls noch Fragen zum Quelltext oder zum Problem einfach schreiben^^.
Mfg Kingler93

P.s.
ich bin mir ziemlich sehr sicher das der fehler beim laden zu suchen ist, weil in der Datei "Notizen.ser" die Einträge vorhanden sind^^
Kingler93 ist offline   Mit Zitat antworten
Ungelesen 12.02.11, 11:00   #2
germgerm
bla
 
Registriert seit: Mar 2010
Beiträge: 312
Bedankt: 302
germgerm ist noch neu hier! | 0 Respekt Punkte
Standard

Wie du schon vermutet hast, funktioniert das Speichern.
Ich vermisse nur die Initialisierung von speicherListe, das machst du hoffentlich woanders.
Beim Laden sehe ich auch keine Initialisierung.

Der Fehler im Programm ist, dass du beim Laden immer direkt die Methode Size verwendest. Bei Java ist (wie in C) das erste Element 0, das zweite 1, usw.
Wenn du statt dessen (Size-1) verwendest, schmiert das Prog nicht mehr ab.

Ich gehen davon aus, dass du keinen Debugger verwendet hast, sonst wärst du selbst darauf gekommen.
Das Einbauen von println zählt auch als Debugging, falls du es nicht anders willst oder kannst. Sogar die Exception ist leer. {Oberlehrer-Smiley}

Edit: Da
germgerm ist offline   Mit Zitat antworten
Ungelesen 12.02.11, 11:40   #3
Kingler93
Anfänger
 
Registriert seit: Sep 2010
Beiträge: 3
Bedankt: 0
Kingler93 ist noch neu hier! | 0 Respekt Punkte
Standard

hey,

Erstmal danke für die schnelle Antwort^^.
Ja ich initialisiere die speicherListe woanders .

Meinst du, dass der zum Bleistift eine OutOfBoudsException ausgibt und darum von try-catch nur den catchteil (also garnichts) ausführt?

mfg Kingler
Kingler93 ist offline   Mit Zitat antworten
Ungelesen 12.02.11, 12:38   #4
AllYouCanEat
Banned
 
Registriert seit: Jan 2011
Beiträge: 16
Bedankt: 12
AllYouCanEat ist noch neu hier! | 0 Respekt Punkte
Standard

Benutze doch einfach einen Debugger!

Bei so einem schlechten Programmierstil ist es zu mühselig Dir zu helfen...
AllYouCanEat ist offline   Mit Zitat antworten
Ungelesen 12.02.11, 17:38   #5
germgerm
bla
 
Registriert seit: Mar 2010
Beiträge: 312
Bedankt: 302
germgerm ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von Kingler93 Beitrag anzeigen
Meinst du, dass der zum Bleistift eine OutOfBoudsException ausgibt und darum von try-catch nur den catchteil (also garnichts) ausführt?
Ich meine, dass der Bytecode-Interpreter bis zur folgenden Zeile kommt und dann im leeren catch weitermacht:

int i = Integer.parseInt(speicherListe.get(speicherListe.s ize()));
germgerm ist offline   Mit Zitat antworten
Ungelesen 12.02.11, 18:53   #6
Kingler93
Anfänger
 
Registriert seit: Sep 2010
Beiträge: 3
Bedankt: 0
Kingler93 ist noch neu hier! | 0 Respekt Punkte
Standard

Okay habe das Problem gelöst^^
Danke für eure Hilfe!

Mfg Kingler
Kingler93 ist offline   Mit Zitat antworten
Ungelesen 12.02.11, 21:10   #7
AllYouCanEat
Banned
 
Registriert seit: Jan 2011
Beiträge: 16
Bedankt: 12
AllYouCanEat ist noch neu hier! | 0 Respekt Punkte
Standard

Und woran lag's?

Das sind eh die besten.
Andere um Hilfe bitten, aber sich einen scheiss dafür interessieren, dass andere auch was mit der Lösung anfangen könnten...
AllYouCanEat ist offline   Mit Zitat antworten
Ungelesen 13.02.11, 06:27   #8
germgerm
bla
 
Registriert seit: Mar 2010
Beiträge: 312
Bedankt: 302
germgerm ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von AllYouCanEat Beitrag anzeigen
Und woran lag's?...
Er hat es so gelöst, in dem er meine Lösungsvorschläge eingebaut hat.
Sonst war in diesen Schnippsel nichts wirklich falsches.
germgerm ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:09 Uhr.


Sitemap

().