Jump to content
dezinh20

Adicionar a Array lista

Recommended Posts

dezinh20

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;
    }
}

Share this post


Link to post
Share on other sites
softklin

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.

Share this post


Link to post
Share on other sites
dezinh20

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.....

Share this post


Link to post
Share on other sites
softklin

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.

Share this post


Link to post
Share on other sites
dezinh20

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

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.