No código abaixo, estou armazenando diversos alunos com seus respectivos ra e notas em um ArrayList.
O problema é que quando eu adc um aluno na primeira posição do ArrayList, e depois adc outro aluno na segundo posição do ArrayList, as informações do segundo aluno fica no lugar das informações do primeiro aluno, ou seja, o ultimo aluno que eu adc no ArrayList, é add em todas as posições antes da atual dele. Alguem pode me ajudar?
package Exercicio04;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.JOptionPane;
public class Notas {
private ArrayList<Notas> info = new ArrayList<Notas>();
private double nota = 0;
private String nome;
private int ra = 0;
private double maior = 0;
private double menor = 10;
private int opcao = 0;
private int raMaior;
private int raMenor;
public ArrayList<Notas> getInfo() {
return info;
}
public void setInfo(ArrayList<Notas> info) {
this.info = info;
}
public double getNota() {
return nota;
}
public void setNota(double nota) {
nota = Double.parseDouble(JOptionPane.showInputDialog("Nota:"));
this.nota = nota;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = JOptionPane.showInputDialog("Nome:");
}
public int getRa() {
return ra;
}
public void setRa(int ra) {
ra = Integer.parseInt(JOptionPane.showInputDialog("Ra:"));
this.ra = ra;
}
public double getMaior() {
return maior;
}
public void setMaior(double maior) {
this.maior = maior;
}
public double getMenor() {
return menor;
}
public void setMenor(double menor) {
this.menor = menor;
}
public int getOpcao() {
return opcao;
}
public void setOpcao(int opcao) {
this.opcao = opcao;
}
public int getRaMaior() {
return raMaior;
}
public int getRaMenor() {
return raMenor;
}
public void entradaDados(){
while(opcao != -1){
Notas alunos = new Notas();
opcao = Integer.parseInt(JOptionPane.showInputDialog("Deseja adcionar um novo aluno?\n Sim: 1\n Não: -1"));
if(opcao != -1){
alunos.setRa(ra);
alunos.setNome(nome);
alunos.setNota(nota);
if(alunos.nota > alunos.maior){
alunos.maior = alunos.nota;
alunos.raMaior = alunos.ra;
}
if(alunos.nota < alunos.menor){
alunos.menor = alunos.nota;
alunos.raMaior = alunos.ra;
}
info.add(alunos);
alunos = new Notas();
}else{
JOptionPane.showMessageDialog(null, "Sessão encerrada");
opcao = -1;
}
}
}
public void alunoMaiorNota() {
String infoMaior = "";
Iterator it = info.iterator();
Notas n;
boolean achou = false;
if (info.size() > 0) {
while (it.hasNext()) {
n = (Notas) it.next();
if (n.getRaMaior() == n.getRa()) {
achou = true;
infoMaior = "Ra: " + n.getRa() + "\nNome: " + n.getNome()
+ "\nNota: " + n.getNota();
}
}
} else {
JOptionPane.showMessageDialog(null, "Nenhum aluno foi adicionado");
}
JOptionPane.showMessageDialog(null, "Aluno com a maior nota:\n\n"
+ infoMaior);
}
public void alunoMenorNota() {
String infoMenor = "";
Iterator it = info.iterator();
Notas n;
boolean achou = false;
if (info.size() > 0) {
while (it.hasNext()) {
n = (Notas) it.next();
if (n.getRaMenor() == getRa()) {
achou = true;
infoMenor = "Ra: " + n.getRa() + "\nNome: " + n.getNome()
+ "\nNota: " + n.getNota();
}
}
} else {
JOptionPane.showMessageDialog(null, "Nenhum aluno foi adicionado");
}
JOptionPane.showMessageDialog(null, "Aluno com a menor nota:\n\n"
+ infoMenor);
}
}