Buscar palavra em um ArrayList

Alguém pode me ajudar com essa questão:
Questão 01: Escreva um programa que faça cadastros de estudantes, a classe estudante deve ter nome, endereço, primeira nota e segunda nota. Faça uma classe teste que ofereça as seguintes opções:

  1. Cadastrar estudantes
  2. Mostrar lista de estudantes
  3. Alterar nota(busca pelo nome)
  4. Sair

public class Estudante {

private String nome;
private String endereco;
private double nota1;
private double nota2;

public Estudante(String nome, String endereco, double nota1, double nota2) {
	this.nome = nome;
	this.endereco = endereco;
	this.nota1 = nota1;
	this.nota2 = nota2;
}

public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

public String getEndereco() {
	return endereco;
}

public void setEndereco(String endereco) {
	this.endereco = endereco;
}

public double getNota1() {
	return nota1;
}

public void setNota1(double nota1) {
	this.nota1 = nota1;
}

public double getNota2() {
	return nota2;
}

public void setNota2(double nota2) {
	this.nota2 = nota2;
}

}

import java.util.ArrayList;
import java.util.Scanner;

public class Teste {

public static void main(String[] args) {
	Scanner sc = new Scanner(System.in);
	ArrayList<Estudante> lista = new ArrayList<Estudante>();
	
	while(true) {
		System.out.println("1. Cadastrar estudante \n2. Mostrar lista de estudantes \n3.Alterar nota(busca pelo nome) \n0. Sair");
		int escolha = sc.nextInt();
		if(escolha == 1) {
			System.out.println("Digite o nome do estudante");
			String n = sc.nextLine();
			sc.nextLine();
			System.out.println("Digite o endereço");
			String e = sc.nextLine();
			
			Estudante est = new Estudante(n,e,0,0);
			lista.add(est);
			
		} else if(escolha == 2) {
			for(Estudante estu: lista) {
				System.out.println(estu.getNome());
				System.out.println(estu.getEndereco());
				System.out.println(estu.getNota1());
				System.out.println(estu.getNota2());
			}
			
			
		} else if(escolha == 3) {
			System.out.println("Digite o nome do estudante");
			String busca = sc.nextLine();
			for(Estudante estu: lista) {
				if(estu.getNome() == busca) {
					System.out.println("Digite a 1º nota");
					double altera = sc.nextDouble();
					System.out.println("Digite a 2º nota");
					double altera2 = sc.nextDouble();
					estu.setNota1(altera);
					estu.setNota2(altera2);
				}
			}
		} else if(escolha == 0) {
			break;
		}
	}

}

}

A minha dificuldade é que na hora de mostrar a lista o nome e endereço ficam em branco

Boas amigo, algumas correções, no entanto aqui também pode usar o switch em vez de if.

import java.util.ArrayList;
import java.util.Scanner;

public class Teste {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        ArrayList<Estudante> lista = new ArrayList<Estudante>();

        while (true) {
            System.out.println("1. Cadastrar estudante \n2. Mostrar lista de estudantes \n3.Alterar nota(busca pelo nome) \n0. Sair");
            int escolha = sc.nextInt();
            if (escolha == 1) {
                System.out.println("Digite o nome do estudante");
                // o sc.nextLine() tem de ser antes, senão a variavel vem vazia //
                sc.nextLine();
                String n = sc.nextLine();
                System.out.println("Digite o endereço");
                String e = sc.nextLine();

                Estudante est = new Estudante(n, e, 0, 0);
                lista.add(est);

            } else if (escolha == 2) {
                for (Estudante estu : lista) {
                    System.out.println(estu.getNome());
                    System.out.println(estu.getEndereco());
                    System.out.println(estu.getNota1());
                    System.out.println(estu.getNota2());
                }

            } else if (escolha == 3) {
                System.out.println("Digite o nome do estudante");
                sc.nextLine();
                String busca = sc.nextLine();
                for (Estudante estu : lista) {
                    //para comprar uma String não pode ser por '==' por esta não ser uma variavel primitiva e ser uma classe, onde tem os seus métodos//
                    // um dos métodos para comparar é o .equals//
                    if (estu.getNome().equals(busca)) {
                        System.out.println("Digite a 1º nota");
                        double altera = sc.nextDouble();
                        System.out.println("Digite a 2º nota");
                        double altera2 = sc.nextDouble();
                        estu.setNota1(altera);
                        estu.setNota2(altera2);
                    }else{
                        System.out.println("Aluno Não encontrado");
                        //break para interromper o for  caso aluno não encontrado//
                        break;
                    }
                }
            } else if (escolha == 0) {
                break;
            }
        }

    }
1 curtida