将值放入BidiMap时为空指针

时间:2015-04-03 10:35:23

标签: java dictionary nullpointerexception apache-commons

我正在努力完成一项任务:你有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);
                   }
               }
        }
    }

2 个答案:

答案 0 :(得分:0)

您需要初始化doors

private BidiMap<Integer, Boolean> doors = new SomethingImplementingBidiMap<>();

答案 1 :(得分:0)

BidiMap是一个界面 使用实现它的类(如TreeBidiMap)。

看看这个link

相关问题