Buscar algo no ArrayList

Eu preciso buscar a nota que o usuário digitou a mostrar a posição dela no ArrayList,
Eu estava tentando fazer assim mas nao ta dando certo, eu ia comparar a nota que o usuário digitou com cada ArrayList só q nao consigo fazer isso( essa é a parte do código onde eu estava tentando fazer)

private int buscar(String nome){
for(int i = 0; i < notas.size(); i++){

     return i; //sim achou 
  } 
     return -1;//nao achou 

}


import java.util.*;

public class BlocoDeNotas{
private ArrayList notas;

public BlocoDeNotas(){
notas = new ArrayList();
}
public void addNota(String nota){
notas.add(nota);
}
public void blockNota(String nota){
notas.remove(nota);
}
public void listarNota(){
for(String listar:notas){
System.out.println(listar);
}
}
public int procurarNota(String nota){
return buscar(nota);
}
private int buscar(String nome){
for(int i = 0; i < notas.size(); i++){

     return i; //sim achou 
  } 
     return -1;//nao achou 

}

}

help

Instância da lista, e métodos citados acima.

	private List<String> notas = new ArrayList<>();

	public void addNota(String nota) {
		notas.add(nota);
	}

	public void removeNota(String nota) {
		notas.remove(nota);
	}

	public void listarNotas() {

		for (String n : notas) {
			System.out.println("Nota: " + n);
		}
	}

	public int buscaNotas(String nota) {

		return notas.indexOf(nota);

	}

Classe principal

public static void main(String[] args) {

		Exemplo e = new Exemplo();

		System.out.println(">>>> Adição de notas");
		e.addNota("A");
		e.addNota("B");
		e.addNota("C");
		e.addNota("D");

		System.out.println("\n>>>> Listagem de notas");
		e.listarNotas();

		System.out.println("\n>>>> Remoção de nota");
		e.removeNota("C");

		System.out.println("\n>>>> Nota listagem de notas");
		e.listarNotas();

		System.out.println("\n>>>> Busca do index");
		System.out.println("A nota está na posição " + e.buscaNotas("D"));
	}

Console:

>>>> Adição de notas

>>>> Listagem de notas
Nota: A
Nota: B
Nota: C
Nota: D

>>>> Remoção de nota

>>>> Nota listagem de notas
Nota: A
Nota: B
Nota: D

>>>> Busca do index
A nota está na posição 2

você tem que modificar aqui, vou dar o exemplo abaixo, como não sei os atributos da sua classe Notas, Vou dar um exemplo colocando como se existissem 1 nome e 3 notas e cada variável vai ter o nome começando com nota e o número respectivo será sobre a ordem das notas.

private Notas buscar(String nome){
for(int i = 0; i < notas.size(); i++){
     if(notas.get(i).nome.equals(nome)){ /*você vai verificar cada posição do vetor e se em uma delas o nome for igual ao passado por parametro na string nome ele vai retornar o nome com as notas incluso*/
     /*Se quiser mostra as notas é só fazer conforme exemplo abaixo:*/
     /*System.out.println("Nota 1: "+notas.get(i).nota1);*/
     /*System.out.println("Nota 2: "+notas.get(i).nota2);*/
     /*System.out.println("Nota 3: "+notas.get(i).nota3);*/
     return notas.get(i); //sim achou 
     }
     
  } 
     return null;//nao achou 
}

Você também tem que fazer uma classe do tipo Notas, pois senão não tem como você procurar um nome especifico, e se tiver notas repetidas poderá retornar a de outro.

public class Notas{
       private String nome;
       private int nota1;
       private int nota2;
       private int nota3;
       public Notas(String nome, int nota1, int nota2, int nota3){
              this.nome=nome;
              this.nota1=nota1;
              this.nota2=nota2;
              this.nota3=nota3;
       }
}

depois na sua aplicação principal mudar conforme exemplo abaixo:

public class BlocoDeNotas{
private ArrayList notas;

public BlocoDeNotas(){
notas = new ArrayList<Notas>();
}
public void addNota(Notas nota){
notas.add(nota);
}
public Notas procurarNota(String nota){
return buscar(nota);
}

Na classe main você terá que ler 4 valores, sendo 1 nome e 3 notas, não vou colocar o exemplo de como você vai pegar as informações do usuário, para o teste eu vou setar valores prontos, conforme o exemplo abaixo:

main{
String nome = "Heitor";
int nota1 = 7;
int nota2 = 8;
int nota3 = 6;
Notas nota = new Notas();
nota.nome=nome;
nota.nota1=nota1;
nota.nota2=nota2;
nota.nota3=nota3;
BlocoDeNotas blocoDeNotas= new BlocoDeNotas;
blocoDeNotas.addNota(nota);
Notas notaASerMostrada = blocoDeNotas.procurarNota("Heitor");
if(notaASerMostrada!=null){
System.out.println("Nome: "+notaASerMostrada.nome);
System.out.println("Nota 1: "+notaASerMostrada.nota1);
System.out.println("Nota 2: "+notaASerMostrada.nota2);
System.out.println("Nota 3: "+notaASerMostrada.nota3);
} 
}

pessoal, eu agradeço mesmo mas nao consegui terminar ainda
dclp

nao to conseguindo desvolver o código mas nao tem problema

Qual problema está acontecendo?

1

Pra te deixar por dentro do assunto é isso q eu tenho q fazer

Mas ja fiz quase tudo, mas tem algumas coisas que eu nao entendo

Para alterar:

public void alterarNota(String notaAntiga, String novaNova) {
		notas.set(notas.indexOf(notaAntiga), novaNova);
}

No main:

System.out.println("\n>>>> Alterar nota de 'A' para 'B'");
e.alterarNota("A", "B");

Console:

Adição de notas

Listagem de notas
Nota: A

Alterar nota de ‘A’ para ‘B’

Nota listagem de notas
Nota: B

muito obrigado, eu ainda nao entendi 100% mas dei um grande avanço já

Valeu mesmo mano :slight_smile: