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");
}
}
}`