Ajuda com toString

13 respostas
Filipe_A

Ola pessoal estou fazendo uns exercicos de uma apostila da Caelum.

Estou com problemas no metodo toString.

package br.com.caelum.caelumcs14_1.vetores.testes;

import br.com.caelum.caelumcs14_1.Aluno;
import br.com.caelum.caelumcs14_1.vetores.Vetor;

public class TesteAdicionaNoFim {
	public static void main(String[] args) {
		Aluno a1 = new Aluno();
		Aluno a2 = new Aluno();

		a1.setNome("Rafael");
		a2.setNome("Paulo");

		Vetor lista = new Vetor();

		lista.adiciona(a1);
		lista.adiciona(a2);

		System.out.print(lista);
	}

}

Era pra mostrar os nomes, mas não mostra o resultado que sai é:
br.com.caelum.caelumcs14_1.vetores.Vetor@126804e

O metodo toString na minha classe vetor ta assim

public String toString() {
		if (this.totalDeAlunos == 0) {
			return "[]";
		}

		StringBuilder builder = new StringBuilder();

		builder.append("[");

		for (int i = 0; i < this.totalDeAlunos - 1; i++) {
			builder.append(this.alunos[i]);
			builder.append(", ");
		}

		builder.append(this.alunos[this.totalDeAlunos - 1]);
		builder.append("]");

		return super.toString();

Se alguem puder me ajudar… Obrigado!

13 Respostas

skalinichenko

Na própria apostila, eles pedem para reescrever o método toString()?
Flw!

Filipe_A

Sim ! eles pedem.

Valeu.

skalinichenko

Já tentou: lista.toString() para ver o que retorna?

System.out.print(lista.toString());

Ps.: não testei o código, supondo…
Flw!

Filipe_A

Acabei de tentar … não aparece nada.

Valeu.

skalinichenko

Filipe A.:
Acabei de tentar … não aparece nada.

Valeu.

Você em nenhum momento, utilizou o método toString() reescrito, tendo com referência, o seu objeto lista (já que é nele, que o método toString(), foi reescrito).
Se vc adicionou, alunos em uma lista, você deve ter um método, que liste todas as propridades (ou específicas propriedades) de cada aluno, tendo o objeto lista como referência.
Se você imprimir só uma linha, não funciona mesmo:

System.out.println(lista)

Ou faria uma iteração pela lista, se ela tiver índice para cada elemento inserido.
PS: apenas uma idéia. Infelizmente não consigo testar, porque não tem nem o JRE instalado aqui :x
Flw!

Filipe_A

Valeu cara , muito obrigado.

Então talvez pode ser logica …

Pq quando eu não adiciona nenhum Aluno, aparece [] da primeira condição.

:smiley:

Filipe_A

Ah eu fiz um teste aqui com String ao inves de StringBuilder.

apenas pra testes…

public String toString() {
		if (this.totalDeAlunos == 0) {
			return "[]";
		}

		//StringBuilder builder = new StringBuilder();
		String teste = new String();

		//builder.append("[");

		for (int i = 0; i < this.totalDeAlunos; i++) {
			//builder.append(this.alunos[i].getNome());
			//builder.append(", ");
			teste += this.alunos[i].getNome();
		}

		//builder.append(this.alunos[this.totalDeAlunos - 1]);
		//builder.append("]");

		return teste;

	}

Agora sim apareceu os nomes…

O metodo toString não aceita como retorno uma StringBuilder,
bom acho que poderia ser dessa forma.

Pois do outro jeito ainda não descobri como fazer.

Flw Ate +
:smiley:

B

Ola,

O teu codigo vc trabalho um for imprimindo os alunos mas na hora do retorno vc retorna o return super.toString();

Ai está o erro… retorne a string que vc criou…

return builder.toString();
Felagund

A diferença, é que nesse metodo vc retornor a string

no primeiro la em cima vc retornor o super.toString();

ou seja não alterou em nada o comportamento. :slight_smile:

Funciona sim com StringBuilder, so faltou esse pequeno detalhe.

Seria interessante também substituir o metodo toString() da sua classe aluno para retornar onome, ai vc não precisaria usar o .getNome().

[]'s

Filipe_A

Puxa vida !

Agora sim funcionou com o return builder.toString();

Eu sabia que tinha algo errado eu só não consegui descobrir o que era…

Valeu, brigadão!
:smiley:

Marilia_Oliveira

Olá…

Estou fazendo o mesmo exercício, surgiu a dúvida o que está linha faz exatamente?

builder.append(this.alunos[this.totalDeAlunos - 1]);

Ela está monstrando na última posição, o último aluno adicionado, sim está! Mas qual a finalidade disso?
Ou meu código está errado?

Obrigada :slight_smile:

pmlm

A finalidade é a virgula…

No for adiciona todos menos o último seguido de uma virgula. Depois do for adiciona o último, já sem a virgula.

Marilia_Oliveira

Totalmente desatenta ¬¬

Mto Obrigada, pela ajuda…

Criado 15 de abril de 2009
Ultima resposta 22 de mai. de 2009
Respostas 13
Participantes 6