数组中的精确正整数

时间:2014-09-11 05:38:26

标签: java arrays

我想打印出数组中的所有正数并排除负数。 例如,我有{0,-3,5,6,-9}。我想要的结果是[0,5,6]。但到目前为止,它只打印正数,并将0存储为负数([0,0,5,6,0])。

这就是我现在所拥有的:

public int[] extractPositives(int[] intArray) {
    int[] array = new int[intArray.length];
     for (int i = 0; i < intArray.length; i++) {
            if (intArray[i] >= 0)
                array[i] = intArray[i];
     }
    return array;
}

4 个答案:

答案 0 :(得分:2)

您还可以在filter()中使用

Integer[] result = Arrays.asList(0, -3, 5, 6, -9).stream().filter(e -> e >= 0).toArray(Integer[]::new);

答案 1 :(得分:1)

如果您不必仅使用两个数组,则可以使用链表来附加结果,然后在其上使用toArray方法返回包含结果的数组...

public int[] extractPositives(int[] intArray) {
    List<Integer> res = new LinkedList<Integer>();
     for (int i = 0; i < intArray.length; i++) {
            if (intArray[i] >= 0)
                res.add(intArray[i]);
     }
    return res.toArray(new int[0]);
}

答案 2 :(得分:1)

如果要先存储结果,可以使用ArrayList:

在开头创建一个:

List myList = new ArrayList();

并将值存储在此列表中而不是新数组中:

myList.add(intArray[i]);

最后,如果需要,可以从ArrayList获取数组:

return myList.toArray();

答案 3 :(得分:0)

如果您只对使用数组感兴趣,可以尝试:

public int[] extractPositives(int[] intArray) {

   int count = 0;
   for (int i = 0; i < intArray.length; i++) {
         if (intArray[i] >= 0)
           count++;
    }

   if(count == 0){
               return null;
   }

   int[] array = new int[count];
   count = 0;
   for (int i = 0; i < intArray.length; i++) {
         if (intArray[i] >= 0)
            array[count++] = intArray[i];
   }
return array;

}

但这肯定是一个丑陋的解决方案。请尝试使用ArrayList。