根据特定特征计算或过滤随机整数数组

时间:2016-11-29 05:05:28

标签: java arrays filter

我的问题是我必须创建一个0-100的随机整数数组,并计算生成的单个数字整数的数量。

到目前为止,我有这个:

public class randomarray {
    public static void main(String[] args) {

        int i;
        int smallintegers;
        int[] RandomArray = new int[10];
        for(i = 0; i <  RandomArray.length; i++) {
            RandomArray[i] = (int)(Math.random() * 100);
            System.out.print(RandomArray[i] + "  ");
            }
    }
}

这可以工作并创建一个随机数字数组,如下所示:

17  56  44  41  42  96  8  42  21  86  

现在我需要找出一种计算单个数字整数的方法,在这种情况下它会是1.

我想到的第一种方法是使用filter()复制单位数整数,从filter()创建一个新数组,然后生成新数组的长度。

提前致谢

2 个答案:

答案 0 :(得分:2)

在构建阵列时检查单个数字整数怎么样:

int numSingle = 0;
for (i=0; i < RandomArray.length; i++) {
    int num = (int)(Math.random() * 100);
    if (num < 10) ++numSingle;
    RandomArray[i] = num;
    System.out.print(num + "  ");
}

System.out.println("There are " + numSingle + " integers in the array.");

如果出于某种原因,您无法检查阵列是否正在构建(例如,您是从某些无法控制的API接收它),那么您可以使用Wombat的建议来迭代阵列。如果您使用Java 8流来执行此操作,我希望它也会在内部迭代数组。

以下是使用流来回答相同问题的方法:

int numSingle = Arrays.stream(RandomArray).filter(n -> n < 10).toArray().length;

答案 1 :(得分:0)

另一种简单而又不那么优雅的方法是将每个整数转换为字符串并使用string.length。我知道我不允许在我的课程中使用lambda表达式,所以这是一条不包含它的路线。