2017-11-02 16 views
0

私は配列を持っている:{0、0、1、0、0、1、1} ​​バイナリランレングス符号化、リセットカウンタ

私はそこに1 の前で、どのように多くの1か0の多くカウントします0の前に、それは基本的に はっきりしていない場合

申し訳ありませんそれは印刷する必要があります:2、1、2、2

(2ゼロ、1 1、2、ゼロ、2 1)

を私がリセットする必要がありますカウンターが、私はそれを行う方法がわからない

public static void main(String[] args) { 

       int tab[] = { 0, 0, 1, 0, 1, 1 }; // 
       int count0 = 0; 
       int count1 = 0; 
       for (int i = 0; i < tab.length; i++) { 
        if (tab[i] == 0) { 
         count0 = count0 + 1; 

        } else { 
         count1 = count1 + 1; 
        } 

       } 
       System.out.println(count0 + "\t" + count1); 
     // prints 4 3 
     // want it to print 2 1 2 2 

      } 
     } 

答えて

0

ありがとうござい0から1までまたは1から0 の際に値の変更をリセットしても非常に終わり。

for (int num : tab) { 
    if (num == 0) { 
     count0++; 
     if (count1 > 0) { 
      System.out.println(count1); 
      count1 = 0; 
     } 
    } else { 
     count1++; 
     if (count0 > 0) { 
      System.out.println(count0); 
      count0 = 0; 
     } 
    } 
} 
System.out.println(Math.max(count0, count1)); 
+0

それは[用-eachループ](https://docs.oracle.com/javase/1.5.0/docs/guide/language/foreach.html)です@Blebhebhe非常 – Blebhebhe

+0

、ありがとうございました。構文はJava 5以降に存在します。インデックスを必要としないときはコレクション内のアイテムを反復するより慣れた方法ですが、アイテム自体だけです。 – janos