Array

Boa Tarde,

Queria enviar todos os 0 para o fim do array, como posso fazer isso?

        int[] nums = {2, 4, 10, 2};
        int[] num = new int[nums.length];

        for (int i = 0; i < nums.length; i++) {
            if(nums[i] ==  10){
                num[i] = 0;
             }else {
                num[i] = nums[i];
            }
        }

        for (int i = 0; i < num.length; i++) {
            System.out.println(num[i]);

        }

Muito Obrgado

Sinceramente não entendi oque vc quer.
Explique melhor.

ora com esse codigo o array vai ficar assim {2, 4, 0, 2}
e o k eu quero é assim {2, 4, 2, 0}

Obrigado

[quote=GuilhermeG]Boa Tarde,

Queria enviar todos os 0 para o fim do array, como posso fazer isso?

        int[] nums = {2, 4, 10, 2};
        int[] num = new int[nums.length];

        for (int i = 0; i < nums.length; i++) {
            if(nums[i] ==  10){
                num[i] = 0;
             }else {
                num[i] = nums[i];
            }
        }

        for (int i = 0; i < num.length; i++) {
            System.out.println(num[i]);

        }

Muito Obrgado[/quote]

Depois de fazer isso você pode ordenar os dados.

        int[] nums = {2, 4, 10, 2};
        int[] num = new int[nums.length];
        int auxiliar; //serve como auxiliar para podermos ordenar
        for (int i = 0; i < nums.length; i++) {
            if(nums[i] ==  10){
                num[i] = 0;
             }else {
                num[i] = nums[i];
            }
        }
        
        for (i = 0; i < num.length - 1; i++)
        {
                for (int j = i + 1; i < num.length; j++)
                {
                        if (nums[i] < num[j]) // assim ele colocará em ordem decrescente.
                        {
                                auxiliar = num[j];
                                num[j] = nums[i];
                                nums[i] = auxiliar;
                        }
                }
        }
        
        for (int i = 0; i < num.length; i++) {
            System.out.println(num[i]);

        }

Só acho desnecessário as 2 arrays, se você não for precisar da array antiga, voce pode fazer assim:

        int[] nums = {2, 4, 10, 2};
        int auxiliar; //serve como auxiliar para podermos ordenar

        for (int i = 0; i < nums.length; i++) {
            if(nums[i] ==  10){
                nums[i] = 0;
             }else {
                nums[i] = nums[i];
            }
        }
        
        for (i = 0; i < nums.length - 1; i++)
        {
                for (int j = i + 1; i < nums.length; j++)
                {
                        if (nums[i] < nums[j]) // assim ele colocará em ordem decrescente.
                        {
                                auxiliar = nums[j];
                                nums[j] = nums[i];
                                nums[i] = auxiliar;
                        }
                }
        }
        
        for (int i = 0; i < nums.length; i++) {
            System.out.println(nums[i]);

        }

O problema é que eu acho que ele não quer que seja ordenado. Ele só quer passar o valor 0 para o final e manter a ordem anterior dos dados.

exacto

{1, 10 , 3, 10 , 2 , 3}

ficaria assim

{1 , 3 , 2 , 3, 0 , 0}

alguém tem ideia de como fazer?

Obrigado:)

[quote=GuilhermeG]exacto

{1, 10 , 3, 10 , 2 , 3}

ficaria assim

{1 , 3 , 2 , 3, 0 , 0}

alguém tem ideia de como fazer?

Obrigado:) [/quote]

E o 10? tem que mandar o 0 (simplesmente) para o final ou todo numero que tiver 0?

o 10 passa a 0 e vai para o final so

Obrigado :slight_smile:

[quote=pvrsouza][quote=GuilhermeG]exacto

{1, 10 , 3, 10 , 2 , 3}

ficaria assim

{1 , 3 , 2 , 3, 0 , 0}

alguém tem ideia de como fazer?

Obrigado:) [/quote]

E o 10? tem que mandar o 0 (simplesmente) para o final ou todo numero que tiver 0?[/quote]

bom vc pode verificar se o número é uma dezena, talvez com o mod vc consiga saber, se for 0 incrementa um contador para saber qntos numeros foram retirados, se vc achar um número que nao pode ser tirado… vc o coloca dentro de um outro array auxiliar. Após essa operação com o seu contador, vc poe no seu novo array a quantidade de numeros 0 que o seu contador contou… +/- isso ae