Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HashMap get方法返回NullPointerException_Java_Nullpointerexception_Hashmap_Minecraft_Bukkit - Fatal编程技术网

Java HashMap get方法返回NullPointerException

Java HashMap get方法返回NullPointerException,java,nullpointerexception,hashmap,minecraft,bukkit,Java,Nullpointerexception,Hashmap,Minecraft,Bukkit,我的插件(Bukkit for Minecraft)中有一个问题,它使该函数在HashMap类的.get()方法的第733行(我切割了许多部分,各行分开)上抛出一个NullPointerException。也可能是之前的情况,我真的不知道或不明白发生了什么。在检查.containsKey()之前,它在.get()上出错 到这里 if (chestplateValues.containsKey(chestplate.getType())) armorValu

我的插件(Bukkit for Minecraft)中有一个问题,它使该函数在HashMap类的.get()方法的第733行(我切割了许多部分,各行分开)上抛出一个NullPointerException。也可能是之前的情况,我真的不知道或不明白发生了什么。在检查.containsKey()之前,它在.get()上出错

到这里

        if (chestplateValues.containsKey(chestplate.getType()))
            armorValue += chestplateValues.get(chestplate.getType());
        if (leggingsValues.containsKey(leggings.getType()))
            armorValue += leggingsValues.get(leggings.getType());
        if (bootsValues.containsKey(boots.getType()))
            armorValue += bootsValues.get(boots.getType());
    if (armorValue > 0) armorValue *= armorMax;
    else armorValue *= armorMin;
    return MathHelper.clamp_float(armorValue, armorMin, armorMax);
}
堆栈跟踪:

[07:21:55 WARN]: [Hardcore Biomes] Task #4 for Hardcore Biomes v0.6.2 generated an exception
java.lang.NullPointerException
    at name.sml.franky1223.hardcorebiomes.HardcoreBiomes.getTempFromArmor(HardcoreBiomes.java:733) ~[?:?]
    at name.sml.franky1223.hardcorebiomes.HardcoreBiomes.access$10(HardcoreBiomes.java:703) ~[?:?]
    at name.sml.franky1223.hardcorebiomes.HardcoreBiomes$1.run(HardcoreBiomes.java:169) ~[?:?]
    at org.bukkit.craftbukkit.v1_7_R1.scheduler.CraftTask.run(CraftTask.java:53) ~[craftbukkit-1.7.2-R0.2.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    at org.bukkit.craftbukkit.v1_7_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:345) [craftbukkit-1.7.2-R0.2.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:587) [craftbukkit-1.7.2-R0.2.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:250) [craftbukkit-1.7.2-R0.2.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:545) [craftbukkit-1.7.2-R0.2.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:457) [craftbukkit-1.7.2-R0.2.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [craftbukkit-1.7.2-R0.2.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]

请帮帮我,我很困惑。提前感谢您。

此代码不应引发NullPointerException

    if ( helmet != null ) {
Float helmetArmor = helmetValues.get(helmet.getType();
if ( helmetArmor != null ) {
     armorValue += helmetArmor ;
}
}


可能您的玩家没有头盔?

如果所有代码都使用相同的方法,我怀疑问题不太可能来自此部分:

helmetValues.get();
更有可能来自:

helmet.getType()
尝试将其更改为以下内容:

if (helmet != null && helmetValues.containsKey(helmet.getType())) {
  armorValue += helmetValues.get(helmet.getType());
}

什么是
材料
枚举
?请显示它的定义。如果您能告诉我们引发NullPointerException的确切行(不仅仅是在代码片段中不太有用的行号),这将有所帮助。您能否将代码简化为一个小示例,以便更好地演示和隔离问题?我已经确定了两行可能的代码(732和733):
if(helmetValues.containsKey(helmet.getType())armorValue+=helmetValues.get(helmet.getType())而且我很确定你需要一个带有Bukkit服务器的Minecraft来测试我的插件,即使我缩短了代码。谢谢你,它成功了!我忘了一开始就检查装甲片是否存在。非常感谢你!
helmet.getType()
if (helmet != null && helmetValues.containsKey(helmet.getType())) {
  armorValue += helmetValues.get(helmet.getType());
}