2017-10-05 1 views
0

Je veux imprimer ce que j'ai actuellement avec une seule boucle for (ou une autre forme d'itération) et une seule déclaration de drapeau mais je ne peux pas la comprendre sans utiliser 'flag #' pour chaque valeur définie. Il devrait y avoir 5 bits - ce que j'ai - mais seulement un drapeau à itérer. J'utilise la divisibilité avec modulo (%) pour trier chaque drapeau. Code ci-dessous.Valeurs d'impression de BitSet avec la boucle 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

_Utilisez un array._ 'BITSET [] = new drapeaux BitSet [6]', etc. –

+0

Pouvez-vous préciser votre question? Étant donné votre code et votre explication, je n'ai aucune idée de ce que vous essayez de faire et de ce que les 'flags1' ...' flags5' sont censés faire. –

+0

Je souhaite imprimer les valeurs déclarées dans le BitSet qui sont divisibles par 1, 2, 3, 4 et 5, en fonction de chaque indicateur respectif. Je ne veux pas utiliser cinq instructions d'impression différentes pour le faire, mais je veux l'itérer. – Squilly

Répondre

0

utiliser un tableau (ou un ArrayList<BitSet>) pour stocker les bitsets puis effectuer une itération sur le tableau.

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]); 
     } 
    }