Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
hallo zusammen,
ich bin neu hier und wollte gleich mal eure fachkundige hilfe in Anspruch nehmen. ich bin grad dabei mir java beizubringen und will im Zuge dessen eine Fifa Tabelle programmieren. Ich brauche dafür nun eine Möglichkeit Werte die ich vormals eingegeben habe bei einem Neustart zu speichern.
bisher habe ich es geschafft eine Klasse Player zu erstellen. mit einem array eine Liste von 5 Spielern zu erstellen. in dieses Array einen Spieler hinzuzufügen.
was ich will:
ich möchte das ganze jetzt so haben das ich mit der case anweisung die Spieler hinzufügen kann und dann diese bei einem Programm Neustadt gemerkt wurden. d.h ich will später das programm ja nur aufrufen und einige werte schon vorgespeichert haben.
ich hoffe ich konnte mein Anliegen deutlich machen
Code:
public class Hauptmenü {
public static void main(String[] args) {
String n = javax.swing.JOptionPane.showInputDialog( "Welche Funktion soll ausgeführt werdern." );
int e= Integer.parseInt( n );
int anzahl = 0 ;
Player[] foo = new Player[5]; //platz für 5 objekte
for(int i = 0; i < 5; i++){
foo[i] = new Player(); //objecte erzeugen
foo[i].schreibstat();
}
switch (e){
case 1:
// noch leerer Platz
break;
case 2:
System.out.print("Spieler hinzufügen");
anzahl++;
String nn = javax.swing.JOptionPane.showInputDialog( "Spieler hinzufügen: \n Bitte Name eingeben." );
foo[anzahl].name=nn;
foo[anzahl].schreibstat();
break;
default:}
}}
Du musst deine Daten irgendwie abspeichern, da gibt es mehrere Möglichkeiten. In eine XML-Datei wäre evtl. sinnvoll. Musst du halt nur noch eine Klasse anlegen, welche das Auslesen und Speichern erledigt.
Also geht das nicht das ich in dem Programm Werte ablege und die wieder aufrufe, sondern ich muss die in ner Datei ablegen und bei Programmaufruf wieder laden?
ist das nicht möglich einen wert durch eingabe in das Programm einzulesen diesen einer variable zu übergeben und die dann beim Neustart des Programms wieder aufrufen zu können?
Also geht das nicht das ich in dem Programm Werte ablege und die wieder aufrufe, sondern ich muss die in ner Datei ablegen und bei Programmaufruf wieder laden?
Nee, nach Beenden deines Programmes sind die Werte weg, wenn du sie nicht irgendwo gespeichert hast. Wie gesagt, es gibt da mehrere Möglichkeiten: Textdatei, XML, Datenbank... Von da kannst du die Werte dann beim Programmstart wieder laden.
ist das nicht möglich einen wert durch eingabe in das Programm einzulesen diesen einer variable zu übergeben und die dann beim Neustart des Programms wieder aufrufen zu können?
Das würde schon funktionieren, allerdings bräuchtest du ein weiteres Programm in welchem die Variable gespeichert werden würde. Ich würde in deinem Falle einfach den Weg über eine xml/cvs Datei, was wesentlich einfacher wäre.
so hab jetzt ne lösung gefunden. ist nich ganz so wie oben aber es bringt mich ein zwei schritte weiter vll schaffe ich die Tabelle doch noch irgendwie ;-)
Code:
try{
FileOutputStream fileStream = new FileOutputStream("Spieler.ser");
ObjectOutputStream os = new ObjectOutputStream(fileStream);
os.writeObject(adde);
os.close();}
catch (IOException ex){
ex.printStackTrace();
} adde = null;
break;
case 3:
try{
FileInputStream fileStreamback = new FileInputStream("Spieler.ser");
ObjectInputStream ds = new ObjectInputStream(fileStreamback);
Player einsw =(Player) ds.readObject();
ds.close();
adde=einsw;
adde.schreibstat();}
catch (IOException ex){
ex.printStackTrace();}
default:}
Ja, serialisieren wäre noch eine weitere Möglichkeit. Wobei ich XML bevorzugen würde. Da kannst du die XML-Datei auch ohne deine Anwendung bearbeiten oder anschauen.
Für die Sammlung der Player würde ich keinen festen Array, sondern eine ArrayList<Player> nehmen. Die ArrayList ist dynamisch erweiterbar und nicht von der Grösse vorher festgelegt.