Definir limites de um vetor para criar outro a partir dele

Olá, tenho o seguinte exercício:
Crie um programa em Java que implemente a função valores_entre. Essa função recebe como parâmetro um array de inteiros V e retorna um outro array de inteiros contendo todos os valores de V que estejam entre o valor mínimo e máximo (que também são passados como parâmetro para a função).

Em seguida, crie a função principal do programa para inicializar um array de inteiros de tamanho 10, exibir esses valores na tela e pedir para o usuário digitar o valor mínimo e máximo a ser buscado. Em seguida o programa deverá chamar a função valores_entre e exibir na tela os valores resultantes.

Meu código ficou assim:

import java.util.Scanner;

public class Vetor {
	/**
	 * A função pegará o vetor inserido e sobrescreverá-lo caso esteja dentro dos limites inseridos e a partir disso o 
	 * copiará para o vetor2 que será o retorno.
	 * @param vetor será o vetor que será usado para os testes com os limites
	 * @param minimo será o limite mínimo adotado
	 * @param maximo será o limite máximo adotado
	 * @return vetor2 com os valores contidos no intervalo.
	 */
	public static int[] valores_entre(int[] vetor, int minimo, int maximo){
		int indice = 0;
		for(int contador = 0; contador < 10; contador++){
			if(vetor[contador] >= minimo && vetor[contador] <= maximo){
				vetor[indice] = vetor[contador]; 
				indice++;
			}
		}
		
		int[] vetor2 =new int[indice];
		for(int contador = 0; contador<vetor2.length-1; contador++){
			vetor2[contador] = vetor[contador];
		}
		return vetor2;
	}
	public static void main(String[]args){
		Scanner scanner = new Scanner(System.in);
		int[] vetor = { 1, 23, 34, 45, 56, 67, 78, 89, 90, 100};
		System.out.println("Digite um limites para o vetor abaixo para saber o vetor resultante.");
		
		for(int contador = 0; contador<10; contador++){//Comando para exibir o vetor inicial
			System.out.print(vetor[contador]+" ");
		}
		
		//Inserção dos limites
		System.out.println("\nLimite mínimo: ");
		int minimo = scanner.nextInt();
		System.out.println("Limite máximo: ");
		int maximo = scanner.nextInt();
		
		for(int contador = 0; contador < valores_entre(vetor,minimo,maximo).length -1; contador++)
		System.out.print(valores_entre(vetor,minimo,maximo)[contador]+" ");
		scanner.close();
	}
}

O código funciona para alguns casos porém não para todos, parece que tive um erro de lógica quanto ao tamanho do segundo vetor mas não compreendi ao certo.