Problema com método toString()

4 respostas
java
H

Bom dia!

Estou desenvolvendo um código de uma pilha, e no meu teste JUnit estou tendo problemas com o meu método toString.

Ao empilhar os dados 50,40,30,20,10 o retorno do toString fica 50,40,30, e não concatena o resto dos dados… Ja fiz o teste de mesa com o método toString e tudo deu certo! não sei mais o que pode estar errado. Vou colocar aqui em baixo os métodos envolvidos e o teste.

Método toString:

public String toString() {
    String saida = "";
    for (int i = 0; i < tamanho; i++) {
        if (info[i + 1] != null) {
            saida += pop() + ",";
        } else {
            saida += pop();
        }
    }
    return saida;
}

Atributos, Construtor e método Push:

public class PilhaVetor implements Pilha {

private T info[];
private int limite;
private int tamanho;

public PilhaVetor(int limite) {
    info = (T[]) new Object[limite];
    this.limite = limite;
    this.tamanho = 0;
}

@Override
public void push(T valor) {
    if (limite == tamanho) {
        throw new PilhaCheiaException();
    } else {
        info[tamanho] = valor;
        tamanho++;
    }
}

Teste no JUnit:

@Test
public void testToString() {
    PilhaVetor pilha = new PilhaVetor(5);
    pilha.push(10);
    pilha.push(20);
    pilha.push(30);
    pilha.push(40);
    pilha.push(50);

    assertEquals("50,40,30,20,10", pilha.toString());
}

4 Respostas

R

O que esse método está recebendo e o que seria pop()?

H

o método toString nao recebe nada, e o método pop() é o método que remove um dado da pilha e retorna o seu valor. no caso, ele vai concatenando na string cada valor dentro da pilha, do topo pra baixo.

H

essa nomenclatura dos métodos é convenção da estrutura de dados

D

Não precisa usar pop:

String saida = "";
for (int i = 0; i < tamanho; i++) {
    if (info[i + 1] != null) {
        saida += info[i]+ ",";
    } else {
        saida += info[i];
    }
}
Criado 4 de maio de 2018
Ultima resposta 5 de mai. de 2018
Respostas 4
Participantes 3