1

过去几天我一直在寻找这个东西,并遇到了最推荐的使用“BitSet 方法”的解决方案。我尝试了同样的方法来设置位的索引并使用 get 方法显示它。

这是我的代码:

int value = (myMap.get(key));  // value could be anything from 0-255

if (items.contains(key)) {
    BitSet bitSet1 = new BitSet(256);

    bitSet1.set(value);
    System.out.print(bitSet1);

    for (int i5 = 1; i5 < bitSet1.size(); i5++) {
        boolean bit =  bitSet1.get(i5);
        System.out.print(bit?1:0);
    }
}

问题是:根据用户操作,可能有 0-255 之间的任何值,例如:40,85,93

我想在布尔数组中设置相应的位索引。上面的代码确实将相应的位索引设置为“1”,但如果索引超过 1,则使用相应的位打印相同数量的布尔数组。

我想在同一个布尔数组中将位索引打印为“1”(根据“值”中的整数索引)。

我也玩过arraylist、int []等,但没有成功。

我知道概念部分缺少一些愚蠢的东西,但如果你们能帮助我,将不胜感激。

4

1 回答 1

2

您的问题中的代码片段似乎在一个循环中,该循环遍历key变量的多个值,期望您在当前迭代之前设置的所有位在您通过循环时在当前迭代期间可用。

要解决这个问题,您需要BitSet在进入循环之前创建对象,并不断重复使用它,而不是每次执行if语句时都创建它。

移动这条线

BitSet bitSet1 = new BitSet(256);

到您的代码片段中隐含的循环之外,或者将其作为您的类中的变量来解决问题。

于 2013-08-27T13:05:00.600 回答