2017-10-05 8 views
0

私は現在、1つのforループ(または別の繰り返し形式)と1つのフラグ宣言で現在のものを印刷したいが、 'flag#'を使用しないと、それぞれの定義された値。私には5ビットありますが、反復するフラグは1つだけです。私はモジュロ(%)で除算を使って各フラグをソートしています。以下のコード。forループでBitSetから値を出力する

import java.util.*; 

public class BitSet { 

    public static void main(String args[]) { 
     BitSet flags1 = new BitSet(5); 
     BitSet flags2 = new BitSet(5); 
     BitSet flags3 = new BitSet(5); 
     BitSet flags4 = new BitSet(5); 
     BitSet flags5 = new BitSet(5); 

     for (int i = 0; i < 6; i++) { 
      if((i % 1) == 0) flags1.set(i); 
      if((i % 2) == 0) flags2.set(i); 
      if((i % 3) == 0) flags3.set(i); 
      if((i % 4) == 0) flags4.set(i); 
      if((i % 5) == 0) flags5.set(i); 
     } 

     System.out.println("Numbers divisible by 1: " + flags1); 
     System.out.println("Numbers divisible by 2: " + flags2); 
     System.out.println("Numbers divisible by 3: " + flags3); 
     System.out.println("Numbers divisible by 4: " + flags4); 
     System.out.println("Numbers divisible by 5: " + flags5); 
    } 
} 
+3

_Use array._ 'たBitSet []フラグが=な新しいBitSet [6]'など –

+0

は、あなたの質問に手の込んだことはできますか?あなたのコードとあなたの説明を考えれば、あなたが何をしようとしているのか、そして 'flags1' ...' flags5'が何をすべきかはわかりません。 –

+0

それぞれのフラグに基づいて、1,2,3,4,5で割り切れるBitSetで宣言された値を出力します。私はそれを行うために5つの異なるprintステートメントを使用したくない、私はそれを繰り返したい。 – Squilly

答えて

0

ビットセットを格納し、配列を反復する配列(又はArrayList<BitSet>)を使用。

import java.util.*; 



    public class BitSet { 
     public static void main(String args[]) { 
      BitSet[] flags = new BitSet[5]; 
     for (int i = 0; i < flags.length; i++) { 
      flags[i] = new BitSet(5); 
     } 

     for (int i = 1; i < 6; i++) { 
      for (int j = 1; j <= 5; j++) { 
       if (i % j == 0) { 
        flags[j - 1].set(i); 
       } 
      } 
     } 

     for (int i = 0; i < flags.length; i++) { 
      System.out.printf("Numbers divisible by %d: %s%n", i + 1, flags[i]); 
     } 
    } 
関連する問題