[RESOLVIDO]Métodos Get de objetos que estão dentro de um ArrayList

Olá,o que estou tentando fazer é o seguinte: Fazer com que o usuário adicione jogadores e depois possa acessar as informações que foram definidas por ele.Cada jogador vai ser um objeto que ficará em um ArrayList enquanto o programa estiver rodando.

Tenho a classe jogadores:

public class jogador {
    
    private String nome;
    
    private float peso;
    
    private float altura;
    
    private int numero;
    
    
    void setNome(String n){
        nome = n;
    }
    
    public String getNome(){
        return nome;
    }
    
    void setPeso(float p){
       peso = p;
    }
   
    public float getPeso(){
       return peso;
    }
   
    void setAltura(float alt){
      altura = alt;
    }
  
    public float getAltura(){
       return altura;
    }
    
    void setNumero(int num){
        numero = num;
    }
    public int getNumero (){
        return numero;
    }
}

Em uma outra classe tenho um ArrayList de objetos jogador:

import java.util.ArrayList;
import java.util.Scanner;
public class testeget {
    void teste(){
        
        ArrayList<jogador>jogadores = new ArrayList<jogador>();
        Scanner entrada = new Scanner (System.in);

        jogador jog1 = new jogador();
        jogador jog2 = new jogador();
        jogador jog3 = new jogador();
    
        jog1.setNome("jogador1");
        jog2.setNome("jogador2");
        jog3.setNome("jogador3");
        
        jogadores.add(jog1);
        jogadores.add(jog2);
        jogadores.add(jog3);
                
        System.out.println ("Manda o palpite ->");
        String busca = entrada.nextLine();
        
        int indice = jogadores.indexOf(busca);
        System.out.println (indice);

    }
    
    public static void main (String args []){
        testeget test = new testeget();
        test.teste();
    }
}

Testei o código criando três objetos jogador e setando três nomes à eles,pedi que o usuário entrasse com um dos nomes para que o programa retornasse esse nome.

Os grandes problemas são o método indexOf que sempre retorna -1 quando eu coloco o palpite do usuário como seu parâmetro e o outro é que eu não sei como fazer para exibir todas as informações do jogador caso o programa encontre seu nome.

tentei usar um for each:


for(jogador player : jogadores){

    String busca;
    System.out.println("Tamanho: "+jogadores.size());
    System.out.println("Digite o nome do jogador:");
    busca  = entrada.nextLine();
    int indice = 0;

    for(int i=0;i<jogadores.size();i++){
        indice = jogadores.indexOf(busca);
        
   }

    if(indice >=0){
        System.out.println (player.getAltura());
        System.out.println (player.getNome());
        System.out.println (player.getNumero());
        System.out.println (player.getPeso());
    }
}

Mas não resolvi

Agradeço a ajuda .

Certo… certo…
Você tem um arraylist de jogadores, cada elemento do array é um objeto da classe Jogador. Como você já fez o foreach, basta ir percorrendo os elementos e testando o elemento em si.
O foreach funciona assim:

for(Jogador player : jogadores)

Esse código quer dizer que, para cada elemento do array ‘jogadores’, coloque o proximo elemento na variavel player para cada volta do laço, agora ela (player) passa a ter um jogador. Com o ‘player’ vc pode fazer o que quiser, get, set, toString… afinal, eh um mero objeto da classe jogador.

[code]String busca;

System.out.println("Tamanho: "+jogadores.size());

System.out.println(“Digite o nome do jogador:”);
busca = entrada.nextLine();

for(Jogador player : jogadores){

if (player.getNome().equals(busca){

    System.out.println("Encontrado!");

    System.out.println (player.getAltura());
    System.out.println (player.getNome());
    System.out.println (player.getNumero());
    System.out.println (player.getPeso());

    break; //interrompe o laco, pára de procurar...

}
}
[/code]

Olá.

Não funciona porque o método indexOf() recebe como parâmetro um objeto. Este é comparado com os elementos do ArrayList que você criou. O que está acontecendo aí é que você está comparando uma String passada pelo usuário com os objetos do ArrayList. O retorno é -1 porque a String não é igual a nenhum objeto do ArrayList. O que você precisa fazer é: primeiro determinar qual atributo do jogador vai ser usado para pesquisa. Supondo que seja o nome, você vai então receber a String digitada pelo usuário do jeito que está fazendo. Vai então percorrer o ArrayList pegando cada elemento dele e comparando o nome com o fornecido pelo usuário. Se encontrar um que corresponda pode interromper o loop e mostrar os dados.

Na prática:

...
String busca = entrada.nextLine(); // recebe a chave de busca

for (int i = 0; i < jogadores.size(); i++){
   jogador = jogadores.get(i);
   if(jogador.getNome().equalsIgnoreCase(busca)){
      System.out.println("nome: " + jogador.getNome());
      System.out.println("peso: " + jogador.getPeso());
      System.out.println("altura: " + jogador.getAltura());
      break; // para interromper a busca
   }
}

Em linhas gerais é isso aí… se sobrar dúvida continue postando

No Oeste é assim… galera rápida no gatilho… rsrsrsrs

Muito obrigado pela ajuda,pelo visto é só mais um erro embaraçoso de iniciante,consertei o erro e agora está funcionando direitinho

Agradeço a ajuda e a atenção.