空指针异常错误调用方法
null pointer exception error calling method
如果我调用一个方法,我会得到这个空指针异常错误。
如果(farm1.cropStat(行,列))
这是方法
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);
}
}
请帮忙:(
您没有在任何地方初始化 field1
,因此当您尝试为其赋值时它为空。
每当您看到类似这样的模式时
if (someCondition) {
return true;
} else {
return false;
}
将其替换为等效的
return someCondition.
是一回事
就错误而言,您需要颠倒检查顺序,以便在引用该项目之前查看该项目不是 null
:
return field1[row][col] != null && !( field1[row][col].harvested );
运算符 &&
的设计方式是一旦发现结果将为假,就会停止进一步的评估。在上面的例子中,如果 field1[row][col]
是 null
,&&
将停止,防止空指针异常。
反转if语句中表达式的顺序:
if( field1[row][col] != null && !( field1[row][col].harvested ))
如果我调用一个方法,我会得到这个空指针异常错误。 如果(farm1.cropStat(行,列))
这是方法
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);
}
}
请帮忙:(
您没有在任何地方初始化 field1
,因此当您尝试为其赋值时它为空。
每当您看到类似这样的模式时
if (someCondition) {
return true;
} else {
return false;
}
将其替换为等效的
return someCondition.
是一回事
就错误而言,您需要颠倒检查顺序,以便在引用该项目之前查看该项目不是 null
:
return field1[row][col] != null && !( field1[row][col].harvested );
运算符 &&
的设计方式是一旦发现结果将为假,就会停止进一步的评估。在上面的例子中,如果 field1[row][col]
是 null
,&&
将停止,防止空指针异常。
反转if语句中表达式的顺序:
if( field1[row][col] != null && !( field1[row][col].harvested ))