Entao pessoal, eu to com um problema aqui… Eu quero fazer uma espécie de ranking em que só os 10 melhores jogadores podem aparecer.
Eu acho que fiz tudo certo só que ao invés de substituir o conteúdo do arquivo, o BufferedWriter adiciona 10 linhas a mais e ferra tudo.
Eu tenho quase certeza que é alguma coisa besta que eu não conssegui perceber.
Aqui vai o código da classe para voces darem uma olhada:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Rank {
String arquivo = "Rank.txt";
String[] jogadores = new String[11];
int[] pontuacoes = new int[11];
Rank(){
GetRank(arquivo);
AddRank("NewGuy", 9, arquivo);
}
public void GetRank(String arq){
try{
BufferedReader reader = new BufferedReader(new FileReader(arq));
String linha = "|";
for(int i = 1; i < jogadores.length; i++){
if((linha = reader.readLine()) != null && linha != ""){
int aux = linha.indexOf("|");
jogadores[i] = linha.substring(0,aux);
System.out.println("Jogadores: "+jogadores[i]);
pontuacoes[i] = Integer.parseInt(linha.substring(aux+1));
System.out.println("Pontuações: "+pontuacoes[i]);
}//if linha
}//for
reader.close();
}catch(Exception e){
Logger.getLogger(Rank.class.getName()).log(Level.SEVERE, null, e);
}
}
//##########################################################################################
public void AddRank(String jogador, int pontos, String arq){
try{
jogadores[0] = jogador;
pontuacoes[0] = pontos;
for(int i = 0; i < pontuacoes.length; i++)
for(int j = 0; j < pontuacoes.length; j++){
if(pontuacoes[i] > pontuacoes[j]){
int num = pontuacoes[i];
pontuacoes[i] = pontuacoes[j];
pontuacoes[j] = num;
String txt = jogadores[i];
jogadores[i] = jogadores[j];
jogadores[j] = txt;
}//ordenacao
}//for
System.out.println("\n\n");
for(int i = 1; i < pontuacoes.length; i++){
System.out.println("Jogadores: "+jogadores[i]);
System.out.println("Pontuações: "+pontuacoes[i]);
}
BufferedWriter writer = new BufferedWriter(new FileWriter(arq,true));
for(int i = 0; i < pontuacoes.length; i++){
writer.write("\r"+jogadores[i]+"|"+pontuacoes[i]+"\r\n");
}
writer.flush();
writer.close();
}catch(Exception e){
Logger.getLogger(Rank.class.getName()).log(Level.SEVERE, null, e);
}
}
public static void main(String[] args){
Rank rank = new Rank();
}
}