2016-09-18 91 views
-2

我正在創建一個用戶正在輸入布爾值的數組,並且該數組將會計數有多少個truefalse將輸出數字。創建一個需要用戶輸入的數組

例如,如果TorF[] = {true, false, true, true, false}那麼它會輸出[3,2](三個true s和2 false s)。

到目前爲止,我有這樣的:

public static int[] longestStreak(boolean[] values) { 
     Scanner input = new Scanner(System.in); 
     boolean TorF[] = new boolean[] 

     if (input == False) 
     { 
      System.out.println(TorF.length);  
     } 
     else 
     { 
      System.out.println(TorF.length); 
     } 
     return TorF; 
} 

林也不太清楚,如果這是正確的。如果有人可以幫助我將不勝感激

謝謝

+2

'input'是掃描儀不實際用戶輸入。您需要解析用戶輸入。 – Kelvin

+0

你的'if'和'else'是做同樣的事情。這不可能是正確的。 – shmosel

回答

2

這是truefalse(不能使用Java中False)。此外,您只需要計算true(s)(因爲缺陷的數量是總數減去trues的數量)。我會用for-each loop。喜歡的東西,

public static int[] longestStreak(boolean[] values) { 
    int trueCount = 0; 
    for (boolean b : values) { 
     if (b) { 
      trueCount++; 
     } 
    } 
    return new int[] { trueCount, values.length - trueCount }; 
} 

在Java中8+ ,像

public static int[] longestStreak(boolean[] values) { 
    int trueCount = (int) IntStream.range(0, values.length) 
      .filter(i -> values[i]).count(); 
    return new int[] { trueCount, values.length - trueCount }; 
} 
0

的Java 8的方式做同樣的:

List<Boolean> valuesList = values.asList(); 
List<Boolean> list2 = valuesList 
    .stream() 
    .map(value-> value ? trueCount++ : falseCount++) 
    .collect(Collectors.toList());`` 
相關問題