空指针异常错误调用方法

时间:2015-03-01 11:46:11

标签: java methods nullpointerexception

如果我调用一个方法,我会得到这个空指针异常错误。 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);
    }  
 }

请帮助:(

3 个答案:

答案 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 ))