正在从Double Array Java中删除所有0值



我在Java中尝试从数组中删除所有0个值时遇到了一些问题,该数组是预定义的,最大值为50。如果用户输入了10个值,那么表中总是剩下40 x 0。

我试图查找此数组的长度,但不包括0个值,因此数组的长度应仅由值1及以上定义。

这是我的代码片段。

double[] storedValues = {32.0,42.4,34.5,32.4,0,0,0,0,0,0,0,0,0,0...}
arrayLength = storedValues.length;

目前,arrayLength将返回"50",因为这是我的数组的预定义大小。我试图使此返回值为"4",因为此数组中只有4个值超过0。

非常感谢您的帮助。

storedValues,过滤大于0的元素,然后计数。比如

int count = (int) Arrays.stream(storedValues).filter(d -> d > 0).count();

或者,循环并计算自己的

int count = 0;
for (double d : storedValues) {
if (d > 0) {
count++;
}
}

只需使用以下代码:

double[] storedValues = {32.0,42.4,34.5,32.4,0,0,0,0,0,0,0,0,0,0};
int arrayLength=0;
for (int i = 0; i < storedValues.length; i++) {
if(storedValues[i] > 0){
arrayLength++;
}
}

//arrayLength给你4个

这里有一个使用流的方法:

Arrays.stream(storedValues).filter(v -> v != 0.0).count()

您可能希望避免在一开始就添加零。如果这是提示的一部分,那么以下是您需要做的:

public double[] RemoveZeros(double[] source)
{
return source.Where(i => i != 0).ToArray();
}

这将在数组中搜索零,然后删除它们。希望这有帮助,伙计。

最新更新