Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Java
You last visited: Today at 09:41

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Programm speichern und später fortführen

Discussion on Programm speichern und später fortführen within the Java forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Oct 2015
Posts: 44
Received Thanks: 8
Cool Programm speichern und später fortführen

Hallo liebe Community,

in einem anderen Beitrag, habe ich mein erstes Programm vorgestellt und um Tipps o.ä. gebeten.

Nun Stelle ich euch eine andere Frage.

Und zwar habe ich vor, den Taschenrechner Zustand zu speichern.

Das Programm sollte eine Speicherfunktion beinhalten. Zudem sollte das Programm, sofern man am ende angekommen ist, nochmal erneut von vorne beginnen, wo ausgewählt werden kann, was man machen möchte (Taschenrechner, Lohnrechner etc..).

Es sollte die Option speichern beinhalten und die Funktion, alles zu löschen und von vorne zu beginnen (Speziell bei einer falschen Eingabe).

Wie schreibe ich diesen Code? Bitte gebt dazu auch noch gleich eine Erklärung ab, was dieser Code beinhaltet.

Vielen Dank!

Mit freundlichen Grüßen



TheRealLenon
TheRealLenon is offline  
Old 10/17/2015, 15:49   #2
 
Mikesch01's Avatar
 
elite*gold: 203
Join Date: Sep 2007
Posts: 732
Received Thanks: 190
Hallo.

Erstmal wollte ich sagen, dass du den Präfix "JS" in deinen Themen zu "Java" meiden solltest, da JS != (nicht gleich) Java ist^^

Um einen Zustand zu speichern gibt es mehrere Wege. Du kannst eine Datenbank-Verbindung benutzen und deine Daten zu persestieren. Ebenfalls könntest du über die Serialisierung der Datenobjekte oder über eine simple Anreihung von Daten (wie das CSV-Format) deine Daten in ein oder mehrere Dateien ablegen.

Um dein Programm immer wieder durchlaufen zu lassen, sollte es in einer while-Schleife laufen (Kommandozeilen-Anwendungen) oder mithilfe der GUI diese Bedienung bauen (Java-Threads).

Wie du das genau schreibst, bleibt dir überlassen. Ganz simpel wäre so ein "Menü"' über eine Switch-Anweisung in einer While-Schleife die jedes mal bei einem Durchlauf abgefragt wird
Mikesch01 is offline  
Old 10/17/2015, 16:12   #3
 
elite*gold: 0
Join Date: May 2015
Posts: 700
Received Thanks: 444
Angenommen, du moechtest die beiden Werte, die verrechnet werden sollen sowie den Operator speichern. Dazu kannst du folgenden Code verwenden:

Erstelle eine neue Datei "CalculatorData.java" mit folgendem Inhalt:
Code:
public class CalculatorData implements java.io.Serializable {
    public int numberA;
    public int numberB;
    public char operator; // -, +, * oder /
}
Jetzt verwende folgende Methoden:
Code:
public static void store(String file, int numberA, int numberB, char operator) throws Exception {
    CalculatorData data = new CalculatorData();
    data.numberA = numberA;
    data.numberB = numberB;
    data.operator = operator;
    try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file))) {
        out.writeObject(data);
    }
}

public static CalculatorData load(String file) throws Exception {
    try (ObjectInputStream in = new ObjectInputStream(new FileInputStream(file))) {
        return (CalculatorData) in.readObject();
    }
}
So verwendest du die Methoden:
Code:
// Programm wird beendet
store("savefile.object", numberA, numberB, operator);
Code:
// Programm wird gestartet
CalculatorData data = load("savefile.object");
int numberA = data.numberA;
int numberB = data.numberB;
char operator = data.operator;
Wenn du pruefen moechtest, ob eine Datei vorhanden ist (um zum Beispiel die Frage zu beantworten: Wurde der Zustand schon einmal gespeichert?) machst du das so:
Code:
if (new File("savefile.object").exists()) { // java.io.File stellt einige Methoden zur Verfuegung, um mit dem Dateisystem zu interagieren; zum Beispiel um zu pruefen, ob eine Datei existiert mittels exists() 
    // Datei existiert
} else {
    // Datei existiert nicht
}
Jetzt noch etwas Erklaerung:
Mit CalculatorData erstellst du eine Klasse, die eben den Zustand in den Attributen speichert. Das Interface will gar nicht, dass irgendwelche Methoden implementiert werden; das muss eine Klasse aber implementieren, damit sie serialisiert (= Objekte koennen irgendwo hin geschrieben und von irgendwo gelesen werden) werden kann.

Der Plan ist jetzt, die drei Werte, die gespeichert werden sollen, in ein Objekt von CalculatorData zu packen, und das Objekt dann auf die Festplatte zu speichern. Genau das macht die store Methode: Objekt anlegen, Daten in die Attribute schreiben, und dann schreibt
Code:
    try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file))) {
        out.writeObject(data);
    }
das Objekt auf die Festplatte. Wenn du mehr ueber das Lesen und Schreiben von Daten irgendwo hin wissen willst, kannst du dir die Klassen InputStream und Unterklassen ansehen, und dazu das Design Pattern "Dekorator".

Die load Methode macht das dann umgekehrt, der Inhalt von der Festplatte wird wieder gelesen, und von Java in ein Objekt verwandelt. Von dem werden dann wieder die Attribute gelesen.

Der Vorteil von der Methode ist, dass sie recht einfach ist. Der Nachteil ist, dass du die Daten, die dann auf die Festplatte geschrieben werden (savefile.object) nicht in Notepad oder so bearbeiten kannst, wie es zum Beispiel bei XML Dateien moeglich ist.
algernong is offline  
Reply


Similar Threads Similar Threads
ScreenToaster | Videos drehen, speichern, uploaden (ohne Programm)
01/27/2012 - Tutorials - 16 Replies
Moin Leute, ich bin da gerade über was ganz nützliches gestolpert. Kennt Ihr ScreenToaster ? Das ist eine Website, wo ihr Video's aufnehmen und direkt online stellen könnt. Das ganze ist recht simpel. Anmelden, auf Record klicken und los gehts. Das Video wird in HD Qualität aufgezeichnet und sobald Ihr fertig seid, könnt Ihr entscheiden, ob Ihr das Video runterladen oder sofort dort hochladen wollt. Das ganze finde ich äußerst hilfreich wenn man mal eben kleine Sachen demonstrieren...
Programm zum speichern & abspielen von Maus-Drücken?
12/22/2011 - General Coding - 10 Replies
Guten Abend Epvp, ist es möglich eine Reihe von Maus-Drücken zu speichern und diese später genau abzuspielen? z.B bei sowas : Osu! - Hatsune Miku - Rubik's Cube - YouTube
[VB] TextBox im Programm speichern
10/12/2011 - .NET Languages - 5 Replies
Hey . Ich wollte mal wissen wie ich es in Visual Basic 2008 es schaffe einen Text von einer Textbox zu speichern nicht als txt datei sondern der Text soll beim erneuerten Öffnen des Programms wieder erscheinen. Kann mir da einer helfen?
Programm womit man scrollende Texte speichern kann
04/22/2011 - Off Topic - 8 Replies
Also ich suche nen Programm was scrollende Texte speichern kann, oder aufnehmen.
Datei speichern im Programm?
04/08/2010 - AutoIt - 16 Replies
Hi e*pvpers, Kann mir jemand helfen? Ich hab so eine Art Passwort Manager gescripted der wenn das Passwort Falsch ist den jenigen Bestraft (durch 50mal öffnen eines unnötigen Programms xD). Jedoch Täte ich gerne eine TextBox(Edit halt oder wie das jetzt Genau heißt :o) einbauen. Die den Inhalt aber speichert! Und beim Nächsten öffnen des Programms der Inhalt noch da sein soll. Jedoch hab ich keine Ahnung wie der Code lauten könnte. Hoffe auf Gute Tips!:handsdown:



All times are GMT +1. The time now is 09:41.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.