2017-10-05 158 views
0

我想打印我現在用單個for循環(或其他形式的迭代)以及只有一個標誌聲明,但是我不能在不使用'flag#'的情況下找出它每個定義的值。應該有5位 - 我有 - 但只有一個標誌迭代。我用modulo(%)來分隔每個標誌。下面的代碼。BitSet for循環的打印值

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._'位集合[] =標誌位集合的新[6]'等 –

+0

你能否詳細說明你的問題嗎?鑑於你的代碼和你的解釋,我不知道你在做什麼和'flags1' ...'flags5'應該做什麼。 –

+0

我想根據每個相應的標誌打印在可由1,2,3,4和5整除的BitSet中聲明的值。雖然我不想使用五種不同的打印語句,但我想重複它。 – 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]); 
     } 
    }