如果我调用一个方法,我会得到这个空指针异常错误。 if(farm1.cropStat(row,col))
这是方法
public boolean cropStat(int row, int col)
{
if( !( field1[row][col].harvested ) && field1[row][col] != null )
{
return true;
}
else
{
return false;
}
}
这是初始化
public void initializeCrops()
{
Random rnd = new Random();
int rRow=-1, cCol=-1;
int i, j;
for (i = 0; i< 74; i++)
{
while(rRow <0 || cCol <0)
{
rRow = rnd.nextInt() % 104;
cCol = rnd.nextInt() % 104;
}
field1[rRow][cCol] = new Crops(rRow, cCol);
}
}
请帮助:(
答案 0 :(得分:1)
每当你看到一个看起来像这样的模式时
if (someCondition) {
return true;
} else {
return false;
}
将其替换为等效的
return someCondition.
这是一回事。
就错误而言,您需要反转检查的顺序,以便在引用之前看到该项目不是null
:
return field1[row][col] != null && !( field1[row][col].harvested );
运算符&&
的设计方式是,一旦看到结果为假,就会停止进一步的评估。在上面的示例中,如果&&
为field1[row][col]
,null
将停止,从而阻止空指针异常。
答案 1 :(得分:0)
您没有在任何地方初始化field1
,因此当您尝试为其指定值时它为null。
答案 2 :(得分:0)
颠倒if语句中表达式的顺序:
if( field1[row][col] != null && !( field1[row][col].harvested ))