Erro no TesteAdicionaNoFim da apostila cs14

3 respostas
C

Olá, boa tarde. Alguém ja estudos a apostila cs14 da Caelum? Estou tendo um erro ao executar o TesteAdicionaNoFim da página 31. Ao invés de ele me retornar os nomes adicionados, o resultado que vem é o seguinte: vetores.Vetor@addbf1

Alguém passou por este problema e pode me ajudar? Grato, Carlos.

3 Respostas

Skull_Drummer

Não estudei a apostila, mas pra mim isso parece um HashCode…vc já fez a sobrescrita do método ToString da classe Object?
Ou pode ser algum erro de conversão de Array em String…só olhando o exemplo mesmo pra saber…

C

Voltei um pouco na apostila e deu o mesmo erro para:

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.println(lista);
	}
	}

e

public class Vetor {
	private int totalDeAlunos = 0;
	private Aluno[] alunos = new Aluno[100];
	
	public void adiciona(Aluno aluno) {
	for (int i = 0; i < this.alunos.length; i++) {
	if (this.alunos[i] == null) {
	this.alunos[i] = aluno;
	this.totalDeAlunos++;
	break;
	}
	}
	}
	
	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();
		}
}
trainpotting

cmendes

tb estou com este problema e recomecei a apostila de novo pois fiquei desencorajado a ir
pra frente sem resolver esta bucha.
sim, Skull_Drummer, tb acho que o problema esta no metodo toString() porque usei pega() e recuperei
os alunos.
na pg 19 tem o código abaixo para sobrescrever o método toString() mas para compila-lo
tive que aceitar sugestao do Eclipse e mesmo assim não consegui imprimir conforme a saída da apostila.
pesquisei sobre Hashcode no oracle e encotrei a abordagem do Paulo no blog e seria legal implementar aqui, c for o momento.
agradeço por enriquecerem o debate ate assimilarmos o conceito e resolvermos o problema :slight_smile:

abs

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();
}
Criado 27 de janeiro de 2009
Ultima resposta 21 de abr. de 2009
Respostas 3
Participantes 3