2016-09-18 20 views
-2

私はブール値を入力する配列を作成しています。配列には何個の数字が出力されるのかを計算します。truefalseが出力されます。ユーザー入力を受け取る配列を作成する

たとえば、TorF[] = {true, false, true, true, false}の場合、[3,2](3つのtrueと2 false)が出力されます。これが正しければ、あまりにもわからない

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を数える必要があります(偽数の数が総数から実数の数を差し引いた数であるため)。そして私はfor-each loopを使用します。

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ウェイのようなもののように、Javaの8+で

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

または、何かが同じことを行うには:

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