Não consigo transferir os números pares e ímpares de um vetor para outro. A mensagem de erro é que as variaveis vetorpares e vetorimpares are read, but never written . Da uma mão ai guys :D

import java.util.Arrays;
import java.util.Scanner;

public class _test{
public static void main(String[] args) {

    Scanner entrada = new Scanner(System.in);

    int[] vetor;
    int[] vetorPares = new int[0];
    int[] vetorImpares = new int[0];
    int qtdNumeros;

    System.out.println("Este programa recebe números e separa os pares dos ímpares");
    System.out.print("Digite a quantidade de números que quer informar: ");
    qtdNumeros = entrada.nextInt();

    vetor = new int[qtdNumeros];

    for (int i = 0; i < qtdNumeros; i++) {
        System.out.print("Digite o " + (i + 1) + "º numero: ");
        vetor[i] = entrada.nextInt();
    }
    for (int i = 0; i < qtdNumeros; i++) {
        if (vetor[i] % 2 == 0) {
            vetorPares = new int[vetor[i]];
        }if (vetor[i] % 2 != 0){
            vetorImpares = new int[vetor[i]];
        }
    }
    entrada.close();

    System.out.println("Números pares: " + Arrays.toString(vetorPares));
    System.out.println("Números impares: " + Arrays.toString(vetorImpares));
}

}

A cada iteração você está criando um novo vetorPares e um novo vetorImpares.
Você também não precisa fazer dois if, se o número não é par, obviamente ele é impar, então não há necessidade de testar se é ímpar.

Faça assim:

int pares = 0;
int impares = 0;
for (int numero : vetor) {
    if (numero % 2 == 0) {
        vetorPares[pares] = numero;
        pares++;
    } else {
        vetorImpares[impares] = numero;
        impares++;
    }
}
1 curtida

Vlw pela atenção mano.

Agora as variáveis “pares” e “impares” dentro dos colchetes esta apresentado um erro “Array index is out of bounds” … esta fora dos limites.

int pares = 0;
int impares = 0;
for (int numero : vetor) {
if (numero % 2 == 0) {
vetorPares[pares] = numero; // Nesta linha
pares++;
} else {
vetorImpares[impares] = numero; // E nesta
impares++;
}
}

Isso acontece porque você criou os arrays com tamanho zero:

int[] vetorPares = new int[0];

O certo seria criá-los com o mesmo tamanho do vetor que tem todos os números:

int[] vetorPares = new int[qtdNumeros];
int[] vetorImpares = new int[qtdNumeros];

Pois pode acontecer de todos serem pares (ou todos ímpares), então eles têm que ter um tamanho que caiba todos.

1 curtida

Boa… vlw galera… deu certo :smiley:
Me ajudaram muito