webForumDet fria alternativet

HighScore lista

Javaur Java

8 svar · 474 visningar · startad av mikael_a

Medlem sedan mars 2000475 inlägg
Frågan#1

Hej,

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?

Medlem sedan juni 2000841 inlägg
#2

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...
		}
	}
Medlem sedan mars 2000475 inlägg
#3

naje det fungerar inte riktigt... resultatet sparas inte.. men det är säkert jag som gör fel...

Medlem sedan mars 2000475 inlägg
#4

Bifogar min javakod

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.

Tacksam för all hjälp

Medlem sedan mars 2000475 inlägg
#5

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());

    }
}

tacksam för all hjälp...

Medlem sedan sep. 2001961 inlägg
#6

public HighScore(){
this.lista = lista;
}

Den här ser lite konstig ut. Varifrån kommer lista som du tilldelar this.lista?

/Lime

Medlem sedan mars 2000475 inlägg
#7

genom

private ArrayList lista

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...

Medlem sedan sep. 2001961 inlägg
#8

Ja men grejen är att det som står där är att du skall tilldela värdet av private lista till this.lista vilket är private lista...

Du sätter alltså värdet till sig själv.

/Lime

Medlem sedan mars 2000475 inlägg
#9

tack... har fått det att fungera...

ni kan stänga tråden om ni vill :)

157 ms totalt · 3 externa anrop · v20260731065814-full.55e59744
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
154 ms — hämta tråd, inlägg och bilagor (db)