我在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();
}
这将在数组中搜索零,然后删除它们。希望这有帮助,伙计。