Duvidas com Array

10 respostas
M
bem ppl o que este programita faz é encontrar os numeros para e impar de uma sequencia de 10 numeros mas estou com um problema eu so queria imprimir os valores par e impar no fim e no meu programa tenho a imprimir todo o arrey como faço para obter este ex; entrada:1 2 3 4 5 6 7 8 9 10 par:2 4 6 8 10 impar:1 3 5 7 9
import java.util.Scanner;
public class ParImpar{
	public static void main( String[] args){
		
		int[] parInpar={0,0,0,0,0,0,0,0,0,0};
		int p=0;
		int i=0;
		int[] par={0,0,0,0,0,0,0,0,0,0};
		int[] impar={0,0,0,0,0,0,0,0,0,0};
		for( int n=0; n <= 9 ; ++n ){
		Scanner kbd=new Scanner( System.in );
		parInpar[n]=kbd.nextInt();
		if(parInpar[n]==0)
		break;
		}
		for( int n=0; n <= 9; ++n ){
		if(parInpar[n]%2==0){
		par[p]=parInpar[n];
		p=p+1;
		}else{
		impar[i]=parInpar[n];
		i=i+1;
		}
		}
		System.out.println("Pares :"+java.util.Arrays.toString(par)); 
		System.out.println("Impares :"+java.util.Arrays.toString(impar));
		}
		}

10 Respostas

ViniGodoy

Não entendi qual é o seu problema. Não está certo já o programa?

M

quando eu testo o programa ele faz tudo certinho so com um pekeno problema

entro com 1 2 3 4 5 6 7 8 9 10
imprime
Par: [2 4 6 8 10 0 0 0 0 0]
Impar [1 3 5 7 9 0 0 0 0 0]

o que eu queria era
entro com 1 2 3 4 5 6 7 8 9 10
imprime
Par: [2 4 6 8 10]
Impar: [1 3 5 7 9]

Mikhas

Voce realmente precisa criar dois arrays?

M

pois eu estou a tentar fazer da maneira que sei :S foi assim que achei melhor para mim alguma ideia?
ou alguem me ajuda num algoritemo melhor?

rdgms

Não vo fazer nenhum codigo para vc programar lol
mais oque você pode fazer é
Criar um array chamado vai listaNumeros
preenche ele ai cria um for (no for coloca o indice contanto assim i++ )
depois crie um outro for que percorra o vetor é pergunte se é par casa não seja par é impar

todo numero par é divisivel por 2…
ou seja (numero%2==0)
% = resto da divisão

HAVE FUN!

ViniGodoy

Você tem 2 opções:

  1. Usar um número especial, que você sabe que não foi inserido pelo usuário:

final int NULO = Integer.MIN_INTEGER; int[] par={NULO,NULO,NULO,NULO,NULO,NULO,NULO,NULO,NULO,NULO,NULO,NULO}; int[] impar={NULO,NULO,NULO,NULO,NULO,NULO,NULO,NULO,NULO,NULO,NULO,NULO};

E na hora do for imprimir ignorar esse número:

System.out.print("Pares: "); for (int numero : par) { if (numero != NULO) { System.out.println(numero); } }

  1. Não gerar os arrays, e só imprimir o resultado corretamente.
B
Deixe de usar arrays. Use estruturas dinâmicas como o List.
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class ParImpar
{
    public static void main(String[] args)
    {
        List<Integer> listaDePares = new ArrayList<Integer>();
        List<Integer> listaDeImpares = new ArrayList<Integer>();
        Scanner in = new Scanner(System.in);

        for (int i = 0; i < 10; i++)
        {
            int numero = Integer.parseInt(in.next());

            if (numero % 2 == 0)
                listaDePares.add(numero);
            else
                listaDeImpares.add(numero);
        }

        System.out.println(listaDePares);
        System.out.println(listaDeImpares);
    }
}
M

pois como devem repara isto e ex de escolinha :S ando a 3 horas de volta disto :S a ultima ideia é a melhor sim para não posso usar isso tem mesmo que ser com arrey :S

peczenyj

O seu problema é só com os 0s no final?

Vc tem dois contadores, um para cada array. Algo como

for(int n...){ if(condicao){ coisa[x] = lala[n]; x++; }else{ outra[y] = lala[n]; y++; } }

Então, o que aconteceria se

:wink:

M

se for so como exercicio de faculdade

public class ParImpar {

	public static void main(String[] args) {

		int[] entrada = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
		
		int[] par = new int[entrada.length];
		int[] impar = new int[entrada.length];
		int contP = 0;
		int contI = 0;

		for (int j = 0; j < entrada.length; j++) {
			if (entrada[j] % 2 == 0) {
				par[contP] = entrada[j];
				contP++;
			} else {
				impar[contI] = entrada[j];
				contI++;
			}
		}

		System.out.println("Pares ");
		for (int i = 0; i < par.length; i++) {
			if (par[i] != 0)
				System.out.print(" * " + par[i]+ " * ");
		}
		System.out.println("\n\nImpares ");
		for (int i = 0; i < impar.length; i++) {
			if (impar[i] != 0)
				System.out.print(" * " + impar[i]+ " * ");
		}

	}

}
Criado 4 de novembro de 2008
Ultima resposta 4 de nov. de 2008
Respostas 10
Participantes 7