Opa, tenho um problema estou criando uma lista de alunos para inserir vários alunos, só que quando compilo o código abaixo não é exibido nada na tela.
[code]import java.awt.List;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Set;
public class Aluno {
private String nome;
private int matricula;
ArrayList alunos = new ArrayList();
public Aluno(String nome, int matricula){
this.nome = nome;
this.matricula =matricula;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public int getMatricula() {
return matricula;
}
public void setMatricula(int matricula) {
this.matricula = matricula;
}
public String toString(){
return (""+nome+""+matricula+""+alunos);
}
public void inserir(Aluno a){
Iterator<Aluno> i = alunos.iterator();
while(i.hasNext()){
alunos.add(a);
}
}
public void exibir(){
Iterator<Aluno> i = alunos.iterator();
while(i.hasNext()){
System.out.println(toString());
}
}
}[/code]
[code]import java.util.Iterator;
public class MAin {
public static void main(String[] args) {
Aluno a1= new Aluno(“robson”,07);
Aluno a2= new Aluno(“Clara”,02);
a1.inserir(a1);
a2.inserir(a2);
a1.exibir();
a2.exibir();
}
}
[/code]
O método inserir deveria ser assim:
public void inserir(Aluno a){
alunos.add(a);
}
O iterator serve para percorrer uma lista. No seu caso, como a lista estava vazia na primeira chamada, o código nunca entraria naquele while. Não existe mesmo a necessidade de percorrer a lista para inserir um elemento dentro dela.
A linha 49 deveria ser:
System.out.println(i.next().toString());
O comando next() retorna o próximo aluno do iterator. E o toString() deve ser chamado nesse aluno.
Olá Robson, tudo bem?
Dei uma olhada rápida no seu código e de cara já identifiquei um erro:
System.out.println(toString());
O método toString() retorna uma String, no seu caso você já implementou o método na sua classe ALUNO.
Então basta fazer: System.out.println(i);
onde i representa um aluno :d
Outra coisa, não seria mais interessante você criar uma classe a parte para inserir e exibir os alunos não?
ops, realmente me esqueci desse detalhe…
ele está percorrendo uma lista
Faça como o ViniGodoy disse que vai da certo
Fiz o que viniGodoy falou, mas mesmo assim não da certo…
[code] public void inserir(Aluno a){
alunos.add(a);
}
public void exibir(){
Iterator<Aluno> i = alunos.iterator();
while(i.hasNext()){
System.out.println(i.next().toString());
}
}
}[/code]
o resultado é o seeguinte:
at java.lang.StringBuilder.append(Unknown Source)
at Aluno.toString(Aluno.java:33)
at java.lang.String.valueOf(Unknown Source)
at java.lang.StringBuilder.append(Unknown Source)
at java.util.AbstractCollection.toString(Unknown Source)