删除阵列全部为零 [英] Remove all zeros from array

查看:191
本文介绍了删除阵列全部为零的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数组:

  [0,5,6,0,0,2,5]

我想从中删除全部为零,使这一回报(保持相同的顺序排列):

  [5,6,2,5]

有去除比下面全零的更简单的方法?

  INT []数组= {0,5,6,0,0,2,5};
        INT LEN = 0;
        的for(int i = 0; I< array.length,我++){
            如果(阵列[I]!= 0)
                LEN ++;
        }
        INT [] newArray =新INT [LEN]
        的for(int i = 0,J = 0; I< array.length,我++){
            如果(阵列[I]!= 0){
                newArray [J] =阵列[我]
                J ++;
            }
        }

我一直没能找到在Arrays类的任何方法,和谷歌/ SO搜索没有给我任何好的答案。


解决方案

  INT J = 0;
    的for(int i = 0; I< array.length,我++)
    {
        如果(阵列[I]!= 0)
            数组[J ++] =阵列[我]
    }
    INT [] newArray = INT新[J]。
    System.arraycopy(阵列,0,newArray,0,j)的;
    返回newArray;

I have an array:

[0, 5, 6, 0, 0, 2, 5]

I would like to remove all zeros from it, so that this returns (keeping the same order):

[5, 6, 2, 5]

Is there any easier way to remove all zeros than the following?

int[] array = {0, 5, 6, 0, 0, 2, 5};
        int len = 0;
        for (int i=0; i<array.length; i++){
            if (array[i] != 0)
                len++;
        }
        int [] newArray = new int[len];
        for (int i=0, j=0; i<array.length; i++){
            if (array[i] != 0) {
                newArray[j] = array[i];
                j++;
            }
        }

I haven't been able to find any method in the Arrays class, and Google/SO searches didn't give me any good answers.

解决方案

    int j = 0;
    for( int i=0;  i<array.length;  i++ )
    {
        if (array[i] != 0)
            array[j++] = array[i];
    }
    int [] newArray = new int[j];
    System.arraycopy( array, 0, newArray, 0, j );
    return newArray;

这篇关于删除阵列全部为零的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆