Duvida imprimindo Array

1 resposta
java
Dayson_Rodrigues

estou estudando estrutura de dados e estou com um método toString(), alguem pode me ajudar a entender esse algoritmo.

OBS: No caso ele apresenta todo objeto criado, e não apresenta o null

public class Vetor {

	private String[] elementos;
	private int tamanho;

public Vetor(int capacidade) {
	elementos = new String[capacidade];
	tamanho = 0;
}


public void adicionaExemplo2(String elemento) throws Exception {

	if (this.elementos.length > tamanho) {
		this.elementos[tamanho] = elemento;
		tamanho++;
	} else {
		throw new Exception("Vetor já está cheio");
	}
}

public String toString() {

	StringBuilder s = new StringBuilder();

	s.append("[");

	for (int i = 0; i < tamanho - 1; i++) {
		s.append(this.elementos[i]);
		s.append(",");
	}

	if (this.tamanho > 0) {
		s.append(this.elementos[this.tamanho - 1]);
	}
	s.append("]");

	return s.toString();
}

public class Aula4 {

public static void main(String[] args) {

	Vetor vetor = new Vetor(7);

	vetor.adiconaElemento3("elemento 1");
	vetor.adiconaElemento3("elemento 2");
	vetor.adiconaElemento3("elemento 3");
	
	System.out.println(vetor.tamanho());
	
	
	System.out.println(vetor.toString());
}

}

1 Resposta

A

Seu objeto de estudo é a classe Vetor.
O que ele faz é simples:
1 - por meio do método adicionaExemplo2, preenche o vetor elementos até o seu limite;

2 - o método toString escreve os elementos existentes no vetor de acordo com a variável tamanho, que serve como um contador para verificar se a “capacidade” do vetor foi atingida;

3 - nestas condições, o método toString imprime no mínimo [], pois você fez o append, de forma independente;

4 - mesmo que você não faça o append, ainda sim seria impresso o equivalente a "" pois a StringBuilder foi inicializada;

5 - para imprimir null no toString, tem que rever a lógica, usando if e não inicializando a StringBuilder durante a declaração da variável, mas sim dentro do if.

Té+

Criado 8 de agosto de 2017
Ultima resposta 8 de ago. de 2017
Respostas 1
Participantes 2