2016-11-29 32 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表達式,所以這是一個不包含它的路由。