pessoal, estou com muita dúvida ao implementar uma agenda telefonica(nome e elefone) em um LinkedList…
por exemplo segue meu codigo…
[code]import javax.swing.;
import java.util.;
class DadosPessoais{
private String nome;
private int telefone;
public DadosPessoais(){
this.nome = "";
this.telefone = 0;
}
public DadosPessoais(String texto, int num){
this.nome = texto;
this.telefone = num;
}
public DadosPessoais(String texto){
this.nome = texto;
}
public DadosPessoais(int num){
this.telefone = num;
}
public void entraNome(String texto){
this.nome = texto;
}
public void entreTelefone(int tel){
this.telefone = tel;
}
public String mostraNome(){
return this.nome;
}
public int mostraTelefone(){
return this.telefone;
}
}
public class ListaAgenda{
private LinkedList lista = new LinkedList();
public void recebePessoa(DadosPessoais p){
this.lista.add(p);
}
public void mostraLista(){
System.out.println(this.lista);
}
public static void main(String arg[]){
DadosPessoais pessoa = new DadosPessoais("Felipe", 1313);
ListaAgenda agenda = new ListaAgenda();
agenda.recebePessoa(pessoa);
agenda.mostraLista();
}
}[/code]
até ai tudo bem , na compilacao num da nenhum erro…
mas quando executa,
VEJAM SÒ O RESULTADO:
run-single:
[DadosPessoais@19821f]
CONSTRUÍDO COM SUCESSO (tempo total: 5 segundos)
POR FAVOR ME AJUDEM…!
Então, dentro do método mostrarLista você utilizou um System.out.println que nesse caso imprime o toString do objeto, o conselho é que você sobrescreva toString dessa forma:
public String toString() {
return "DadosPessoais - Nome: " + nome + " - Telefone: " + telefone;
}
Ob.: muda o telefone para String.
vejam só este codigo:
[code]
import java.util.;
import javax.swing.;
public class ListaDadosPessoais{
public static void main(String arg[]){
LinkedList lista = new LinkedList();
lista.add(new Integer(10));
lista.add(new Integer(20));
lista.add(new Integer(30));
lista.add(new Integer(40));
lista.add(new Integer(50));
lista.add(new Integer(60));
lista.add(new Integer(70));
lista.add(new Integer(80));
lista.add(new Integer(90));
lista.add(new Integer(100));
lista.add(new Integer(110));
lista.add(new Integer(120));
System.out.println(lista.size()); //imprime 12
for(int i=0; i<lista.size(); i++){
System.out.println(lista.remove());
}
}
}[/code]
este codigo só imprime metade da lista, se for 6 elementos imprime 3, se for 20 imprime 10…
Alguem pode me dizer pq isso acontece???
aqui… eu fiz desse jeito mas está imprimindo sempre o ultimo elemento…
[code]
public class ListaDadosPessoais{
private LinkedList lista = new LinkedList();
public void insereLista(DadosPessoais p){
lista.add(p);
}
public void mostraLista(int i){
System.out.println("Nome: " +lista.get(i).mostraNome());
System.out.println("Telefone: " +lista.get(i).mostraTelefone());
}
public static void main(String arg[]){
DadosPessoais pessoa = new DadosPessoais();
ListaDadosPessoais dados = new ListaDadosPessoais();
int i=0;
pessoa.recebeNome("ab");
pessoa.recebeTelefone(12);
dados.insereLista(pessoa);
pessoa.recebeNome("bc");
pessoa.recebeTelefone(45);
dados.insereLista(pessoa);
pessoa.recebeNome("fg");
pessoa.recebeTelefone(78);
dados.insereLista(pessoa);
pessoa.recebeNome("de");
pessoa.recebeTelefone(848);
dados.insereLista(pessoa);
pessoa.recebeNome("gfgf");
pessoa.recebeTelefone(5456);
dados.insereLista(pessoa);
pessoa.recebeNome("hgjg");
pessoa.recebeTelefone(42151);
dados.insereLista(pessoa);
System.out.println(dados.lista.size()); //aqui imprime 6
while(i<dados.lista.size()){ //neste laço imprime os 6 elemento
dados.mostraLista(i); //porem é o ultimo 6vezes!
i++;
}
}
}[/code]