dezinh20 Posted May 3, 2012 at 05:17 PM Report #452937 Posted May 3, 2012 at 05:17 PM estou tendo um problema de lista, eu criei 3 adições mas ele só me mostra 1, sabem o motivo ?? public class Principal { public static void main(String[] args) { ListaLigada lista = new ListaLigada(); lista.adiciona("Rafael"); lista.adiciona("Paulo"); lista.adiciona("Paulo"); System.out.println(lista); } } LISTA LIGADA :: public class ListaLigada { private Celula primeira; private Celula ultima; private int totalDeElementos; public void adiciona(Object elemento) { if (this.totalDeElementos == 0){ this.adicionaNoComeco(elemento); }else { Celula nova = new Celula(elemento); this.ultima.setProxima(nova); this.ultima = nova; } } public void adiciona(int posicao, Object elemento) { if(this.totalDeElementos == 0){ this.adicionaNoComeco(elemento); }else { Celula nova = new Celula(elemento); this.ultima.setProxima(nova); this.ultima = nova; this.totalDeElementos++; } } public void adicionaNoComeco(Object elemento) { Celula nova = new Celula(this.primeira, elemento); this.primeira = nova; if(this.totalDeElementos == 0 ) { this.ultima = this.primeira; } this.totalDeElementos ++; } public Object pega(int posicao) { return null; } public void remove(int posicao) { } public void removeDoComeco() { } public void removeDoFim() { } public int tamanho() { return 0; } public boolean contem(Object o) { return false; } @Override public String toString(){ if (this.totalDeElementos == 0) { return "[]"; } StringBuilder builder = new StringBuilder("["); Celula Atual = primeira; for(int i= 0; i < this.totalDeElementos -1; i++){ builder.append(Atual.getElemento()); builder.append(", "); Atual.getProxima(); } builder.append(Atual.getElemento()); builder.append("]"); return builder.toString(); } } CELULA :: class Celula { private Celula proxima; private Object elemento; public Celula(Celula proxima, Object elemento){ this.proxima = proxima; this.elemento = elemento; } public Celula(Object elemento){ this.elemento = elemento; } public void setProxima(Celula proxima){ this.proxima = proxima; } public Celula getProxima(){ return proxima; } public Object getElemento(){ return elemento; } }
softklin Posted May 3, 2012 at 05:49 PM Report #452941 Posted May 3, 2012 at 05:49 PM Não sei se será disto (foi o que me saltou à vista em primeiro lugar), mas no teu toString(), estás a fazer um ciclo de 0 até totalElementos - 1 exclusivé, isto é: totalElementos = 3; for(int i = 0; i < totalElementos - 1; i++) system.out.println(i); isto dá 0 1 Podes colocar <= ou retirar o -1, começando no i = 0. Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.
dezinh20 Posted May 3, 2012 at 05:53 PM Author Report #452942 Posted May 3, 2012 at 05:53 PM mas ai você está limitando a somente 3 entradas... se eu limitar a mais, e for precisar aumentar, vou ter quer que ficar toda hora alterando isto... e este total de elementos é somente um contador.....
softklin Posted May 3, 2012 at 06:03 PM Report #452944 Posted May 3, 2012 at 06:03 PM Não foi isso que eu quis dizer, apenas dei o exemplo de teres 3 objetos na lista. Mas agora é que reparei com mais atenção que tu fazes o append do último objeto fora do ciclo for, portanto não é por aí. Estava a pensar que imprimias todos os elementos dentro do ciclo, exceto o último, que afinal está a ser imprimido fora do ciclo, penso que isso esteja bem. No entanto, ainda no teu método toString(), estás a usar a instrução: Atual.getProxima(); Visto que a função tem retorno, não quererias escrever: Atual = Atual.getProxima(); ? Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.
dezinh20 Posted May 3, 2012 at 07:10 PM Author Report #452952 Posted May 3, 2012 at 07:10 PM Desculpe agora entendi aonde você falou sobre o for(int i = 0; i < totalElementos - 1; i++) system.out.println(i); alterei e deu certo 🙂 Obrigado
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now