这个方法一直给我一个空指针异常,不太清楚为什么

时间:2016-11-14 16:45:34

标签: methods nullpointerexception

public int calculateWholeAmount()
{
 int wholeAmount = 0;
 Dice[] amountOfDice;
 amountOfDice = new Dice[getDiceAmount()];
 for(int i = 0; i < amountOfDice.length ; i++)
{
 int x = amountOfDice[i].wuerfeln();
 wholeAmount = wholeAmount + x;
}
 return wholeAmount;
}

//这个方法应该在那里创造一个我可以抛出的灵活数量的骰子。问题是当我自己启动方法时,我得到一个零点异常,不知道为什么。

1 个答案:

答案 0 :(得分:0)

您在初始化之前使用了amountOfDice(第5行)。

amountOfDice =新骰子[amountOfDice];

在用于修复问题之前初始化它。例如: amountOfDice = new Dice [5];

修改 在您更新的代码中,您在数组上调用.lenght。如果该数组为null(当您的方法返回0时),它将抛出一个nullpointer异常。所以你必须确保在一个非空的数组上调用.length。

if(amountOfDice != null) { /*your code*/ }

在上面的代码中,我做了一个检查如何验证数组是否为null的示例。在if语句中你可以调用for循环。当然,您也可以尝试/捕获您的异常,但这不是最佳实践,因为您知道问题出现在哪里。所以只需在你的forloop上使用上面的代码。

或者确保你的方法(getDiceAmount())永远不会返回0或null。但是如果有人改变你的方法,你将再次遇到同样的问题,因为其他人不知道你的实现。