我尝试创建一个数组,数组中的值大于用户输入的某个阈值,因此我将传输一个总秒数数组,并保留大于阈值的值。我可以适当地传输所需的值,但似乎无法在不打印不包含值的结束元素的情况下打印结果。
下面是我写的代码:
public static int[] overGivenMinutes(int minThres, int arrayValues[]) {
int[] greaterThanThres = new int[arrayValues.length];
int j = 0;
for (int i = 0; i < arrayValues.length; i++) {
int minutes = arrayValues[i] / 60;
if (minutes > minThres) {
greaterThanThres[j++] = arrayValues[i];
}
}
return greaterThanThres;
}
当用户输入30分钟标记时,它将打印:
Time[00] = 56:38
Time[01] = 34:27
Time[02] = 51:04
Time[03] = 40:07
Time[04] = 43:34
Time[05] = 00:00
Time[06] = 00:00
Time[07] = 00:00
Time[08] = 00:00
Time[09] = 00:00
我试图找出我需要做什么来删除元素5-9,因为他们是空的,我不知道如何。任何帮助是非常感谢。
3条答案
按热度按时间mwg9r5ms1#
你在开始定义数组长度,所以你只剩下空值,你能做的就是使用
java.util.List
的一个实现,比如ArrayList
。当你想添加一个元素时,只需将它推到列表中。
这是一个替代方案。或者你可以简单地在最后再次循环你的数组,并根据你的条件清理它。
8ehkhllq2#
Bill Mair's answer有一个正确的想法-你需要返回一个没有“悬空”元素的较小的数组。然而,通过流式传输和过滤数组,然后将其收集到一个数组中,比创建一个新数组然后返回它的部分副本更容易实现这一点:
uujelgoq3#