我目前正在网上编码以学习编码并且正在做战舰问题。在这个问题中,您将获得方法以及它们在代码中接受的参数。
我遇到了用户输入行和列的问题,代码会验证是否输入了行和列。
// Has the location been initialized
public boolean isLocationSet()
{
if(row == null && col == null)
{
return false;
}
return true;
}
我得到的错误说:无法比较的类型int和(它切断但我假设它意味着null或布尔值)
如果预期的整数row
和column
为空,则返回false,我怎么能说,否则返回true?
答案 0 :(得分:0)
冲突是由Java中的the difference between primitive types and reference types造成的。 Java有一些内置类型(int
,boolean
,float
,char
等),它们永远不会是null
,永远不能继承。您似乎正在尝试将int
(row
)与null
进行比较。这是一个错误,因为int
永远不会是null
。
您可能希望使用Integer
,这是一种可自动转换为int
的引用类型。
答案 1 :(得分:0)
int
不能是null
。也许还有很多其他原始类型。相应地调整条件:
private int row = 0;
private int col = 0;
// Has the location been initialized
public boolean isLocationSet()
{
if(row <= 0 || col <= 0)
{
return false;
}
return true;
}
我也会使用OR运算符而不是AND。大概您的row
和col
变量初始化为0
。因此,例如,如果row=1
只有col=0
,那么此isLocationSet()
方法将返回false,这是因为其中一个位置变量row
和{{1}尚未设定。
如果要检查null,可以使用col
:
Integer