Jag försöker att spara ett resultat "poäng" i en .txt fil, när man trycker på en knapp som heter "highscore" och sedan sortera dessa i nummerordning 1 - 10 och sedan visa listan när man trycker på en knapp som heter "show highscore" men jag har ingen anning om hur man läser och sparar till en fil, någon som har lust och ork att förklara lite?
När man läser/skriver till fil så gör man det via strömmar. Överhuvudtaget när man ska skicka data fram och tillbaka i Java så gör man det med strömmar.
Man kan läsa/skriva till filer på massor av olika sätt, här är ett:
void write()
{
try
{
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("highscore.txt")));
for(int i = 0; i < 10; i++)
{
out.println(i);
}
out.close();
}
catch(Exception e)
{
//hoppsan nåt gick visst fel...
}
}
void read()
{
try
{
BufferedReader in = new BufferedReader(new FileReader("highscore.txt"));
String mLine = in.readLine();
while(mLine != null)
{
System.out.println(mLine);
mLine = in.readLine();
}
in.close();
}
catch(Exception e)
{
//hoppsan nåt gick visst fel...
}
}
Jag försöker att spara resultatet när man avslutar applicationen... men det verkar inte fungera. Någon vänlig själ som orkar/vill hjälpa mig med detta. Bifogar JavaKoden.
Har lyckats spara resultatet i en fil, men jag lyckads inte öppna den och visa den...
Jag sparar resultaten i en ArrayList (namn + poäng) jag försöker sedan att lista allt som ingår i denna ArrayList genom
public ArrayList getLista(){
return lista;
men det fungerar inte... den retunerar endast "null" hur går jag tillväga för att visa innehållet i en ArrayList ???
/************************************************************
Klass:
HighScore.java
Medlemar:
ingen
Metoder:
getLista();
update();
writeFile();
readFile()
Denna klass uppdaterar highscorelistan, och ser till att den
innehåller 10 personer
*************************************************************/
import java.util.*;
import java.io.*;
public class HighScore implements Serializable{
private ArrayList lista;
/* ============================================
Konstruktor()
Pre: ingen
Post: ingen
============================================ */
public HighScore(){
this.lista = lista;
}
/* ============================================
getLista()
Pre: ingen
Post: retunerar listan
============================================ */
public ArrayList getLista(){
return lista;
}
/* ============================================
update()
Pre: name, points
Post: Denna metod läser ifrån en array och
uppdaterar "highscore.micke" sedan sorterar den
listan i rätt ordning. Ser också till att det är
max 10 personer i listan
============================================ */
public void update(String name, int points){
HighScoreGet data = new HighScoreGet(name, points);
// Hämtar listan ifrån filen
try {
lista = readFile("highscore.micke");
}
catch (FileNotFoundException fe){
}
catch (IOException ie){
}
catch (ClassNotFoundException ce){
}
//Skapar listan om den inte finns
if (lista == null){
lista= new ArrayList();
lista.add(data);
for (int i = 0;i<10;i++){
lista.add(new HighScoreGet(" ",-1));
}
}
// Personen sorteras
else{
for (int i = 0;i < lista.size(); i++){
if (lista.size()==(i)){
lista.add(i,data);
i= 100000;
}
else{
HighScoreGet thisHighScore = (HighScoreGet) lista.get(i);
if (data.getPoints() > thisHighScore.getPoints()){
lista.add(i, data);
i = 100000;
}
}
}
}
// Tar bort alla personer efter 10
while (lista.size() > 10){
lista.remove(10);
}
// Skriver till filen
try{
writeFile(lista, "highscore.micke");
}
catch (FileNotFoundException fe){
}
catch (IOException ie){
}
}
/* ============================================
writeFile()
Pre:
Post: Denna metod skriver highscore filen
============================================ */
public void writeFile(ArrayList highScoreLista, String filename)
throws FileNotFoundException , IOException {
FileOutputStream output = new FileOutputStream(filename);
ObjectOutputStream out = new ObjectOutputStream(output);
out.writeObject(highScoreLista);
out.close();
}
/* ============================================
readFile()
Pre:
Post: Denna metod läser highscore filen
============================================ */
public ArrayList readFile(String filename)
throws FileNotFoundException, IOException, OptionalDataException, ClassNotFoundException{
FileInputStream input = new FileInputStream(filename);
ObjectInputStream in = new ObjectInputStream(input);
ArrayList highScoreLista = (ArrayList)in.readObject();
in.close();
return highScoreLista;
}
}
/************************************************************
Klass:
HighScoreGet.java
Medlemar:
ingen
Metoder:
setHighScorePoints();
setHighScoreName();
getHighScoreName();
getPoints();
Denna klass hanterar highscorelistan
*************************************************************/
import java.io.*;
public class HighScoreGet implements Serializable{
private String name;
private int points;
/* ============================================
Konstruktor()
Pre: ingen
Post: sparar namn och points
============================================ */
public HighScoreGet(String name, int points){
this.name = name;
this.points = points;
}
/* ============================================
setHighScorePoints()
Pre: ingen
Post: sätter aktuell summa pengar
============================================ */
public void setHighScorePoints(int newHighScorePoints) {
points=newHighScorePoints;
}
/* ============================================
setHighScoreName()
Pre: ingen
Post: sätter aktuellt namn
============================================ */
public void setHighScoreName(String newHighScoreName) {
name=newHighScoreName;
}
/* ============================================
getHighScoreName()
Pre: ingen
Post: Hämtar namnet i highscorelistan
============================================ */
public String getHighScoreName(){
return name;
}
/* ============================================
getPoints()
Pre: ingen
Post: Hämtar poängen i highscorelistan
============================================ */
public int getHighScorePoints(){
return points;
}
}
/************************************************************
Klass: ShowHighScore.java
Medlemar: ingen
Metoder: actionPerformed
Denna klass öppnar highscorelistan.
*************************************************************/
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
class ShowHighScore implements ActionListener
{
HighScore topp;
/* ============================================
actionPerformed()
Pre: ActionEvent
Post: skriver ut ett fel meddelande
============================================ */
public void actionPerformed( ActionEvent e )
{
topp = new HighScore();
String str = "HighScore is not configured properly, or can not be shown.";
JFrame f = new JFrame( "Blackjack HighScore Display" );
f.setSize( 400,700 );
f.setVisible( true );
System.out.println("testar");
System.out.println(topp.getLista());
}
}
jag har fått det att nästan fungera... dock försöker jag spara en variabel som jag kallar summa finns i klassen "bank" till min highscore klass... men den vägar att skicka med den...