将值放入 BidiMap 时出现空指针
Null-Pointer when putting values in BidiMap
我正在尝试做一个任务:你有 100 扇门,一排。您经过门 100 次。第一次通过时,您访问每扇门并切换门(如果门关闭,您打开它;如果它打开,您关闭它)。第二次你只访问每 2 扇门(门#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);
}
}
}
}
您需要初始化doors
:
private BidiMap<Integer, Boolean> doors = new SomethingImplementingBidiMap<>();
BidiMap
是一个接口。
使用实现它的 class(如 TreeBidiMap
)。
看看这个link。
我正在尝试做一个任务:你有 100 扇门,一排。您经过门 100 次。第一次通过时,您访问每扇门并切换门(如果门关闭,您打开它;如果它打开,您关闭它)。第二次你只访问每 2 扇门(门#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);
}
}
}
}
您需要初始化doors
:
private BidiMap<Integer, Boolean> doors = new SomethingImplementingBidiMap<>();
BidiMap
是一个接口。
使用实现它的 class(如 TreeBidiMap
)。
看看这个link。