Problema com a classe Scanner

Estou fazendo um projeto em java, que são 3 classes. Uma classe Aluno, que armazena os dados do aluno, uma classe Vetor, que armazena até 10 alunos, uma classe de Teste. O programa funciona normalmente quando eu adiciono 1 aluno na lista, porém quando eu vou adicionar o segundo, ele ignora uma linha de uma objeto Scanner, e não lê um dado necessário para adicionar. Eu sou novo na linguagem, aproximadamente 3 meses, e não estou conseguindo encontrar o meu erro. Tem como ajudar?

Classe Aluno

public class Aluno {

    private String nome;
    private int matricula;
    private double nota;
    
    public Aluno(String nome, int matricula, double nota){
        this.nome = nome;
        this.nota = nota;
        this.matricula = matricula;
    }
    
    public String getNome(){
        return this.nome;
    }
    
    public int getMatricula(){
        return this.matricula;
    }
    public double getNota(){
        return this.nota;
    }
    
    /*public void setNome(String nome){
        this.nome = nome;
    }
    
    public void setMatricula(int matricula){
        this.matricula = matricula;
    }
    
    public void setNota(Double nota){
        this.nota = nota;
    }
    */
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(this.matricula).append(" - ").append(this.nome).append(" - ").append(this.nota);
        
        return sb.toString();
    }

    
    public boolean equals(Object o) {
        Aluno outro = (Aluno)o;
        return this.nome.equals(outro.nome);
    }
    
}`

Classe Vetor

`import java.util.Scanner;

public class Vetor {

// Declarando e Inicializando um array de Aluno com capacidade 10.
private Aluno[] objetos = new Aluno[10];
private static int totalDeObjetos = 0;
private Scanner entrada = new Scanner(System.in);

private boolean posicaoOcupada(int posicao) {
    return posicao >= 0 && posicao < this.totalDeObjetos;
}

private boolean posicaoValida(int posicao) {
    return posicao >= 0 && posicao <= this.totalDeObjetos;
}

private void garantaEspaco() {
    if (this.totalDeObjetos == this.objetos.length) {
        Aluno[] novaArray = new Aluno[this.objetos.length * 2];
        for (int i = 0; i < this.objetos.length; i++) {
            novaArray[i] = this.objetos[i];
        }
        this.objetos = novaArray;
    }

}

public void adiciona(Aluno aluno) {
    //this.garantaEspaco();
    this.objetos[this.totalDeObjetos] = aluno;
    this.totalDeObjetos++;
}

public void adiciona(int posicao, Aluno aluno) {
    this.garantaEspaco();
    if (!this.posicaoOcupada(posicao)) {
        throw new IllegalArgumentException("Posição Inválida");
    }

    for (int i = this.totalDeObjetos - 1; i >= posicao; i--) {
        this.objetos[i + 1] = this.objetos[i];
    }

    this.objetos[posicao] = aluno;
    this.totalDeObjetos++;
}

public Object pega(int posicao) {
    if (!this.posicaoOcupada(posicao)) {
        throw new IllegalArgumentException("Posição Inválida");
    }
    return this.objetos[posicao];
}

/*public void remova(int posicao) {
 if (!this.posicaoValida(posicao)) {
 throw new IllegalArgumentException("Posição Inválida!");
 }

 for (int i = posicao; i < this.totalDeObjetos - 1; i++) {
 this.objetos[i] = this.objetos[i + 1];
 }
 this.totalDeObjetos--;
 }*/
public void remova() {
    int matricula;
    System.out.print("Informe a matricula do aluno que deseja remover:");
    matricula = entrada.nextInt();
    for (int i = 0; i < totalDeObjetos; i++) {
        if (objetos[i].getMatricula() == matricula) {
            for (int j = i; j < this.totalDeObjetos - 1; i++) {
                this.objetos[i] = this.objetos[i + 1];
            }
        }
    }
    this.totalDeObjetos--;
}

public void removaFinal(int posicao) {

    posicao = this.totalDeObjetos - 1;
    if (!this.posicaoValida(posicao)) {
        throw new IllegalArgumentException("Posição Inválida!");
    }

    for (int i = posicao; i < this.totalDeObjetos - 1; i++) {
        this.objetos[i] = this.objetos[i + 1];
    }
    this.totalDeObjetos--;
}

public Aluno criaAluno() {
    String nome;
    double nota;
    int matricula;
    System.out.print("Digite o nome do aluno: ");
    nome = entrada.nextLine();
    System.out.print("Digite a matricula do aluno: ");
    matricula = entrada.nextInt();
    System.out.print("Digite a nota do aluno: ");
    nota = entrada.nextDouble();

    return new Aluno(nome, matricula, nota);
}

public boolean contem(Object objeto) {
    for (int i = 0; i < this.totalDeObjetos; i++) {
        if (objeto.equals(this.objetos[i])) {
            return true;
        }
    }
    return false;
}

public int tamanho() {
    return this.totalDeObjetos;
}

public String toString() {
    if (this.totalDeObjetos == 0) {
        return "[]";
    }

    StringBuilder builder = new StringBuilder();
    builder.append("Matricula - Nome - Nota\n");

    for (int i = 0; i < this.totalDeObjetos ; i++) {
        builder.append(objetos[i].toString());
        builder.append("\n");
    }

    return builder.toString();
}

}`

Classe Teste

`import java.io.*;
import java.util.Scanner;

class Teste {

public static void escolhas() {
    System.out.print("Escolha a Opcao:");
    System.out.print("\n1. Inserir Aluno");
    System.out.print(" \n2. Remover Aluno");
    System.out.print(" \n3. Exibir Alunos");
    System.out.print(" \n4. Sair");
    System.out.print("\n. Opcao :\t ");
}

public static void main(String args[]) {
    Vetor v = new Vetor();
    Scanner entrada = new Scanner(System.in);
    String valor;
    try {
        escolhas();
        char opcao = entrada.nextLine().charAt(0);
        while (opcao != '4') {
            switch (opcao) {
                case '1':
                    v.adiciona(v.criaAluno());
                    break;
                case '2':                        
                    v.remova();
                    break;
                case '3':
                    System.out.println(v.toString());                                
                    break;
                default:
                    System.out.println("Opcao Invalida !");
            }
            System.out.println();
            escolhas();
            opcao = entrada.nextLine().charAt(0);
        }
    } catch (Exception erro) {
        System.out.println("Erro de Entrada de Dados");
    }
}

}`