Vetor e Loop for em java

Ler um vetor A com 20 elementos. Construir dois vetores B e C, sendo
que nos vetor B e C serão armazenados o valores pares e ímpares de
A, respectivamente, como posso melhorar esse codigo? eu consegui fazer mas parece meio confuso. valeu!

public static void main(String[] args) {

		Random r = new Random();
		int pares = 0;
		int impares = 0;
		int[] vetorA = new int[10];
				
		for (int i=0; i<vetorA.length; i++) {
			vetorA[i] = r.nextInt(10);
			if (vetorA[i] % 2 == 0) {
				pares += 1;
			}else if (vetorA[i] % 2  == 1){
				impares += 1;
			}
		}
		
		int[] vetorB = new int[pares];
		int[] vetorC = new int[impares];
		
		int par = 0;
		int impar = 0;
		
		for (int i=0; i<vetorA.length; i++) {
			if (vetorA[i] % 2 == 0) {
				vetorB[par] += vetorA[i];
				par++;
			}else if (vetorA[i] % 2  == 1){
				vetorC[impar] += vetorA[i];
				impar++;
			}
			
		}
		
		System.out.println("Total nº par: "+pares);
		System.out.println("Total nº impar: "+impares);
		
	
		System.out.print("\nVetor A - ");
		for (int i : vetorA) {
			System.out.print(i);
		}

		System.out.print("\nVetor B - ");		
		for (int i : vetorB) {
			System.out.print(i);
		}
		
		System.out.print("\nVetor C - ");		
		for (int i : vetorC) {
			System.out.print(i);
		}
	}
}
1 curtida

Você pode usar ArrayLists ou precisam ser arrays simples?

Arrays simples ainda nao cheguei nas Lists :slight_smile:
o codigo funciona porem tive que tirar do loop for duas var para dar certo.

eu acabei trocando o numero de posicoes do vetorA pra testar e esqueci de mudar para 20 de novo, abstrai isso ai

@neal-smith tem alguma dica?

@IvanRafael.dev essa linha ai vc esta incrementando o valor não precisa fazer isso basta armazenar valor que vier segundo diz o enunciado

Assim,

  vetorB[par] = vetorA[i];

A mesma coisa nessa linha

  vetorC[impar] += vetorA[i];

Outra coisa nas linhas onde estiver isso aqui:

   }else if (vetorA[i] % 2  == 1){

Muda pra isso aqui:

   }else {   // só basta isso  

Exemplo completo:

    //caso for par
    if (vetorA[i] % 2 == 0) {
      vetorB[par] = vetorA[i];
       par++;
    }else{ // se não for par com certeza vai ser impar
    	vetorC[impar] = vetorA[i];
        impar++;
    }

Consegui fazer pouca coisa:

import java.util.Random;

public class Main {

	public static void main(String[] args) throws Exception {
		Random r = new Random();
		
		int pares = 0, impares = 0;
		int[] vetorA = new int[10];
		
		for (int i = 0; i < vetorA.length; i++) {
			if ((vetorA[i] = r.nextInt(10)) % 2 == 0) {
				pares++;
			} else {
				impares++;
			}
		}

		int[] vetorB = new int[pares];
		int[] vetorC = new int[impares];

		int par = 0, impar = 0;

		for (int n : vetorA) {
			if (n % 2 == 0) {
				vetorB[par++] = n;
			} else {
				vetorC[impar++] = n;
			}
		}

		System.out.println("Total nº par: " + pares);
		System.out.println("Total nº impar: " + impares);

		System.out.print("\nVetor A - ");
		for (int i : vetorA) {
			System.out.print(i + " ");
		}

		System.out.print("\nVetor B - ");
		for (int i : vetorB) {
			System.out.print(i + " ");
		}

		System.out.print("\nVetor C - ");
		for (int i : vetorC) {
			System.out.print(i + " ");
		}
	}
}