2016-09-18 92 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());`` 
相关问题