Problema menor elemento em vetor Java

Pessoal, estou com um problema em um exercício em uma disciplina básica, de Estrutura de Dados. O exercício pede, entre outras coisas, um método para uma classe Vetor que retorne o menor número. O vetor sempre retorna o valor 0. O código que estou utilizando é o seguinte:

public class Vetor {

private int [] numeros;
private int tamanho;
private int ocupados = 0;


public Vetor (int capacidade) {
	this.numeros = new int[capacidade];
}

    public void atribuiValor(int posicao, int elemento) {
	numeros[posicao] = elemento;
	ocupados++;
}
public int menorValor() {
	int menor = numeros[0];
	
	for (int i = 1; i<numeros.length; i++) {
		if (menor > numeros[i]) {
			menor = numeros[i];
		}
	}
	return menor;
}

public class main {

public static void main(String[] args) {
	
	Vetor vetor = new Vetor(20);
	
	vetor.atribuiValor(0, 4);
	vetor.atribuiValor(1, 8);
	vetor.atribuiValor(2, 12);
	vetor.atribuiValor(3, 16);
	System.out.println(vetor.menorValor());
}

}

Alguém poderia me apontar qual é o erro e como corrigir?

Teve uma pergunta aqui recentemente com o mesmo bug numa classe Vetor que causa esses problemas que tá vendo.

Foi você mesmo fazendo a pergunta? Você tá pegando esse código de Vetor de algum lugar?

O que acontece é o seguinte:

  • Você tá dizendo que seu vetor tem 20 posições
  • Todas as posições são iniciadas com 0.
  • Você preenche 4 posições com valores.
  • As outras 16 posições ainda possuem valor 0.
  • Sua lógica para achar o menor valor está dando o resultado correto.
1 curtida

Muito obrigado pela ajuda!