2016-11-29 72 views
0

我的问题是,我必须从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

如何检查单位整数,而你正在建设的阵列:

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

我知道我只是在愚蠢。对不起,谢谢。 P.S.是否有可能以我提到的方式使用filter()? –

+0

@KasparFroyen我给你一个选项,使用流和过滤器。 –

0

另一种简单的尚未为优雅的方式来做到这一点。将每个整数转换为字符串,并使用string.length减。我知道我不允许在我的类中使用lambda表达式,所以这是一个不包含它的路由。