Implementar um Array com números Pares de outro Array

Tenho que implementar um array com os números pares de outro array, não sei como fazer isso, parei nessa parte do código:

	int[] vetorPar = new int[10];
	int[] vetor = new int[] { 1, 2, 3, 4, 5 };

	for (int i = 0; i < vetor.length; i++) {
		if ((vetor[i] % 2) == 0) {

		}

	}

Por favor, podem me ensinar?

Faça um LOOP (do, while, for, etc) percorra todo seu array e faça a seguinte verificação:
Divida seu número por 2, se resto do número em questão for = 0 então o número é par, se não é impar. Pegue esse numero identificado na verificação e adicione em seu novo array com números pares.

Para pegar o resto de uma divisão utilize o operador %
10 % 2

int[] vetorPar = new int[10];
int[] vetor = new int[] { 1, 2, 3, 4, 5 };

for (int i = 0; i < vetor.length; i++) {
	if ((vetor[i] % 2) == 0) {

	}

}

Fiz esse loop, não sei como “adiciona” no novo vetor

Você tem que ter um contador para saber em qual posição de vetorPar deve ir o número:

int[] vetor = new int[] { 1, 2, 3, 4, 5 };
int[] vetorPar = new int[vetor.length];
int cont = 0; // posição no vetorPar
for (int i = 0; i < vetor.length; i++) {
    if ((vetor[i] % 2) == 0) {
        vetorPar[cont] = vetor[i]; // adiciona no vetorPar
        cont++; // vai para a próxima posição
    }
}

Também inicializei vetorPar com new int[vetor.length] (o mesmo tamanho de vetor), já que ele vai no máximo ter a mesma quantidade de elementos de vetor (se todos forem pares, por exemplo).


Como arrays têm tamanho fixo, no exemplo acima somente 2 números pares foram colocados em vetorPar (ficaram 3 posições “sobrando”), então para mostrar os pares eu não posso ir até vetorPar.length, tenho que ir apenas até a quantidade de pares que encontrei (por exemplo, se eu quisesse imprimir os pares):

System.out.println("Os númeeros pares são:");
for (int i = 0; i < cont; i++) {
    System.out.println(vetorPar[i]);
}

E só pra constar, você também pode usar o enhanced for para iterar por vetor:

int[] vetor = new int[] { 1, 2, 3, 4, 5 };
int[] vetorPar = new int[vetor.length];
int cont = 0;
for (int n : vetor) { // usando enhanced for
    if (n % 2 == 0) {
        vetorPar[cont] = n;
        cont++;
    }
}

Só não daria para usar em vetorPar, porque como já explicado, nem todas as posições estarão ocupadas, então neste caso teria que iterar até cont mesmo.

1 curtida

Muito obrigada!!