因此,我正在尝试创建游戏。我的主要方法调用了我放在同一个文件中的另一个方法。它在测试时工作得非常好,由于某种原因它停止了工作并向我扔了一个 NPE。作为序言,我非常绿色(仅在我的 Java 教科书的第 5 章中)。
这是我的代码的相关部分。我将信息从我的主要方法传递到另一个使用另一种方法进行计算的方法。此方法传递了对包含字符串的游戏板对象的引用。如果我将 pushCard 方法传递给常量而不是 getSlot** 方法,则它可以完美运行。NPE 是否意味着我引用的 newBoard 对象已变为空?如果我在调用 windAction() 之前放置一个 System.out.print,它会打印正确的字符串而不是 null。我很困扰。
任何帮助或建议都会有很大帮助。提前致谢。
public static void main (String[] args)
{
switch (playCard)
{
case "wind":
//slotselection has already been given a value
windAction(slotSelection.toUpperCase());
break;
// There is more code here that is not shown...............
}
}
public static void windAction(String slotSelection)
{
switch (slotSelection.toUpperCase())
{
case "A1":
{
if (pushCard(newBoard.getSlotA2(), newBoard.getSlotA3()) == true)
newBoard.setSlotA3(newBoard.getSlotA2());
newBoard.setSlotA2("EMPTY");
if (pushCard(newBoard.getSlotB1, newBoard.getSlotC1) == true)
newBoard.setSlotC1(newBoard.getSlotB1());
newBoard.setSlotB1("EMPTY");
} //end case A1
break;
// There is more code here that is not shown...............
}
}
public static Boolean pushCard(String S1, String S2)
{
Boolean result = null;
if ((S1 == "fire") | (S1 == "water") | (S1 == "wind")){
if ((S2 != "fire") | (S2 != "water") | (S2 != "wind"))
result = true;
else
result = false;
}
return result;
}//end push card method