Problema na separação de pares e ímpares

Olá!

Mais uma vez estou aqui com minhas dificuldades de iniciante… =P

Dessa vez fiz um exercício onde devo criar um Vetor A com 20 números, então transferir esses números para um Vetor B, separando os pares dos ímpares.

O problema é que sempre que rodo o programa, aparecem alguns pares entre os ímpares.

Segue o meu código:

public class Exer31 {

public static void main(String[] args) {
    int[] arrayA = new int[20];
    int[] arrayB = new int[20];
    int contPar=0;
    
    for(int i=0,j=19;i<arrayA.length;i++){
        arrayA[i]=(int)Math.round(Math.random()*100);
        if(arrayA[i]%2==0){
            arrayB[i]=arrayA[i];
            contPar++;
        } else {
            arrayB[j]=arrayA[i];
            j--;
        }
    }
    
    for(int i=0;i<arrayB.length;i++){
        if(i<contPar){
            System.out.println("Números pares: " + arrayB[i]);
        } else {
            System.out.println("Números impares: " + arrayB[i]);
        }
    }
}

}

Não podes usar a mesma variável (i) para percorrer todo o arrayA e ao mesmo tempo ser a próxima posição de inserção de número par no arrayB. Assim estás a copiar os números pares para a mesma posição em B e não para o início do array.

Estou usando um j para correr o arrayB.

 

Eu não tinha visto isso! O.o

Agora sim, funciona perfeitamente.

Muito obrigado @pmlm :slight_smile: