繁体   English   中英

使用for循环从BitSet打印值

[英]Print values from BitSet with for loop

我想用一个for循环(或另一种形式的迭代)打印我当前拥有的内容,并且仅打印一个标志声明,但是如果不为每个定义的值使用'flag#',就无法弄清楚。 应该有5位-我有-但是只有一个标志可以迭代。 我正在使用除数与模(%)对每个标志进行排序。 下面的代码。

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

使用数组(或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]);
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM