我正在努力完成一项任务:你有100个门。你在门口做了100次通行证。第一次,你访问每扇门并切换门(如果门关闭,你打开它;如果它是打开的,你关闭它)。第二次你只访问每一个第二门(#2号门,#4号,#6号......)。第三次,每隔3门(#3号门,#6号,#9号......等),直到你只访问第100个门。
问题:当把键和值放在地图中时,我得到一个零点异常。
以下是代码:
import org.apache.commons.collections4.*;
public class Doors_100
{
private BidiMap<Integer, Boolean> doors;
Random r = new Random();
public Doors_100()
{
for(int i = 1; i < 101; i++){
doors.put(Integer.valueOf(i), r.nextBoolean()); //here is the null-pointer
}
}
public void toggleDoors() {
for(int i = 1; i < 101; i++){
for(boolean value : doors.values()){
if(doors.getKey(value) % i == 0){
doors.get(value);
value ^= true;
System.out.println("Key: " + doors.getKey(value) + " Value: " + doors.get(value)
+ " at " + i);
}
}
}
}
答案 0 :(得分:0)
您需要初始化doors
:
private BidiMap<Integer, Boolean> doors = new SomethingImplementingBidiMap<>();
答案 1 :(得分:0)
BidiMap
是一个界面
使用实现它的类(如TreeBidiMap
)。
看看这个link。