从数组中删除零值

时间:2014-02-26 13:15:21

标签: java android arrays

我有一个零值的数组,我希望将此数组复制到其他数组但没有零值。如果无法确定数组大小,我怎么能这样做,因为我不知道有多少个零。请注意,由于原因,我 无法使用List或ArrayList

// frame is the original array

final int[] sorted = new int[??];

for (int i = 0; i < frame.length; i++) {
    if (frame[i] != 0) {
        sorted[i] = frame[i];
    }
}

6 个答案:

答案 0 :(得分:1)

如果必须使用数组,则可以执行此操作:

int j = 0;

for (int i = 0; i < frame.length; i++) {
    if (frame[i]!=0) {
        j++
    }
}

final int[] sorted = new int[j];
j = 0;
for (int i = 0; i < frame.length; i++) {
    if (frame[i]!=0) {
        sorted[j] = frame[i];
        j++;
    }
}

答案 1 :(得分:1)

我知道如何使用给定的约束条件执行此操作的唯一方法是首先计算,处理下一步:

unsigned int nonZeroCount = 0;

// Count the amount of non-zero values
for (int i = 0; i < frame.length; i++){
    if (frame[i]!=0)
        nonZeroCount++;
}

// Create the NEW Array
final int[] sorted = new int[nonZeroCount];

// NEXT add them to your new array, Need to have 2 separate counters, 1 for your initial array,
// Another for where you are placing it within your new array
unsigned int anotherCount = 0;
for (int i = 0; i < frame.length; i++){
    if (frame[i]!=0){
        sorted[anotherCount ] = frame[i];
        anotherCount++;
    }
}

答案 2 :(得分:1)

尝试以下方法:

String validNumbers = "";

for (int i = 0; i < frames.length; i++) {
 if (frames[i] != 0)
   validNumbers += (i > 0 ? ";": "")+frames[i];
}

String sorted[] = validNumbers.split(";");

这样,你将拥有一个String数组,其数字不同于0;

答案 3 :(得分:0)

我不太了解零。

那你为什么不喜欢?

int counter = 0;
for (int i = 0; i < frame.length; i++) {
    if (frame[i]==0){
        counter++;
    }
}

答案 4 :(得分:0)

您可以创建一个与您测试的数组大小相同的新数组。之后,您遍历数组,并为找到的每个非零值添加它,同时增加一个计数器,该计数器将表示找到的非零元素的数量。在此之后,您可以使用它来创建一个新数组来复制您的值,或者在迭代新数组时将计数器简单地用作上限。

答案 5 :(得分:0)

int noneZeroCount= 0;

for (int i = 0; i < frame.length; i++) {
    if (frame[i]!=0) {
        noneZeroCount++;
    }
}

final int[] sorted = new int[noneZeroCount]; 

// You got size of non zero elements in array now run copy loop