Percorrer LinkedList - Metodos

Boas, tenho aqui as classes dispnibilizadas. Tenho duvidas na classe torneio devido aos metodos. Estao expostas na parte onde postei o codigo. Obrigado.

Classe Jogador -

public class Jogador {
    
    private String nome;
    private int nivel;
    private int vitorias;
    private int derrotas;
    private int parciais;
    
    public static LinkedList<Jogador> jogador = new LinkedList<Jogador>();

    public Jogador(String nome, int nivel, int vitorias, int derrotas, int parciais) {
    this.nome = nome;
    this.nivel = nivel;
    this.vitorias = vitorias;
    this.derrotas = derrotas;
    this.parciais = parciais;
    }

    public int getDerrotas() {
        return derrotas;
    }

    public int getNivel() {
        return nivel;
    }

    public String getNome() {
        return nome;
    }

    public int getParciais() {
        return parciais;
    }

    public int getVitorias() {
        return vitorias;
    }
    
    public int get_Pontuacao() {
        int pont;
        pont = 5*vitorias - 3*derrotas + parciais;
        return pont;
    }
    
    public void resJogo(Integer pg){
        pg = parciais;
        
    }

Classe interface -

public interface Operacoes {
      
    public void jogo(String n1, String n2, int p1, int p2);
    public Jogador nome();
    public String [] classificacao();   
      
}

Classe Torneio -
Nesta classe realizei os três métodos, mas acho que não tão 100%.
O de fazer a melhor diferença entre vitorias e derrotas, não sei como o fazer. Tenho que percorrer a lista, e depois a cada ciclo, fazer diferença dos 2 atributos. E depois como comparo ? Não tou a ver mesmo.

1 . Deverá considerar que o método recebe o nome de cada jogador e os parciais ganhos por
cada um deles.

2 . Melhor diferença entre vitórias e derrotas. Em caso de empate considere o que tem
melhor nível.

  1. Os jogadores ordenados de acordo com a pontuação obtida

public class Torneio implements Operacoes {
       private int pos;
       private String [] Jogadores;
       private static final int MAX_SIZE = 50;
    
public Torneio (int dim){
    Jogadores = new String[dim];
    pos=-1;
}
public Torneio (String Jogadores []){
    Jogadores = new String[MAX_SIZE];
    
}
public void add(String nome){
        Jogadores [++pos]=nome;
        /*
        int i=0;
        while (i<conj.length && conj[i]!=null)
            ++i;
        if (i<conj.length)
            conj[i]=value;*/
    }
    public void remove(int index){
        for(int i=index; i<Jogadores.length-1;i++){
            Jogadores[i]=Jogadores[i+1];
        --pos;
        }
    
    }
    public String getValue (int index){
        return Jogadores[index];
    }

    @Override
    public void jogo(String n1, String n2, int p1, int p2){
        int i=0;
        while (!n1.equals(Jogador.jogador.get(i).getNome())) {
                            i++;}
        if (i > Jogador.jogador.size()) {
            System.out.println("Jogador 1 não encontrado!");
        } else {
            Jogador.jogador.get(i).resJogo(p1);}
        while (!n2.equals(Jogador.jogador.get(i).getNome())) {
                            i++;}
        if (i > Jogador.jogador.size()) {
            System.out.println("Jogador 2 não encontrado!");
        } else {
            Jogador.jogador.get(i).resJogo(p2);}
    }

    @Override
    public Jogador nome(){
        int dif;
        for (Jogador j : Jogador.jogador) {
            dif = j.getVitorias()-j.getDerrotas();
    }
        return j.getNome();
    }

    @Override
    public String[] classificacao(){
       
       // - Ordenação da lista
       // - Bandeira vermelha - marca a posição  e guarda o valor ordenado
       // - Bandeira azul - marca a posição do menor encontrado até ao momento
       // - Bandeira verde - percorre todas asmposições e compara com o menor
    for (Jogador j : Jogador.jogador) {
       int i=0;                                               //i = bandeira vermelha
       int menor = j.get_Pontuacao(); //menor = bandeira azul
       for (Jogador jj : Jogador.jogador){ //j = bandeira verde
           if (jj.get_Pontuacao() < Jogador.jogador.get(menor).get_Pontuacao())
               menor = jj.get_Pontuacao();
       }
       int temp = Jogador.jogador.get(i).get_Pontuacao(); //guarda o valor que está na bandeira preta
       menor = Jogador.jogador.get(i).get_Pontuacao(); //guarda o menor valor encontrado
       temp = Jogador.jogador.get(menor).get_Pontuacao();

       }
    String[] array  = null;  
    array = (String[]) Jogador.jogador.toArray();
    return array;
  }

}
    

E aí, alvaro123!

[code]@Override
public Jogador nome(){

    Jogador auxiliar = null;
    for (Jogador j : Jogador.jogador) {

        if (auxiliar = null) {
            auxiliar = j;
        }
        else {
            
            int difAtual = (auxiliar.getVitorias() - auxiliar.getDerrotas());
            int difNova = (j.getVitorias() - j.getDerrotas());

            if (difNova = difAtual) {
                if (if j.getNivel() > auxiliar.getNivel()) {
                    auxiliar = j;
                }
            }
            else if (difNova > difAtual) 
                auxiliar = j;
        }
    }

    return auxiliar;
}[/code]

Que tal?

Espero ter ajudado,
fique com Deus! :smiley:

Sim, entendi a logica Nicolas Fernandes!! Obrigado. Acho que de resto tenho os metodos corretos. Obrigado !

Nao temos de implementar no fim o j.GetNome() ? para assim devolver o nome do jogador ?
Obrigado.

Devolva o objeto inteiro. Assim, você pode fazer uso de todos os dados do “jogador”!

Abraços,
fique com Deus! :smiley: