CodeHS战列舰Java
我目前正在做在线编码学习编码和战舰问题。在这个问题中,在代码中给出了方法和它们接受的参数
我遇到一个问题,用户输入一行和一列,代码验证是否输入了一行和一列
// Has the location been initialized
public boolean isLocationSet()
{
if(row == null && col == null)
{
return false;
}
return true;
}
我得到的错误是:不可比较类型int和(它截断了,但我假设它表示null或boolean)
如果预期的int row
和column
为空,那么我怎么能说返回false,否则返回true
# 1 楼答案
int
不能是null
。许多其他基本类型也不能。相应地调整您的条件:我还将使用OR运算符而不是AND。假设您的
row
和col
变量被初始化为0
。因此,例如,如果row=1
但是col=0
,那么这个isLocationSet()
方法将返回false,这是预期的,因为其中一个位置变量row
和col
尚未设置如果要检查空值,可以使用
Integer
:# 2 楼答案
冲突是由于Java中的the difference between primitive types and reference types引起的。Java有一些内置类型(
int
、boolean
、float
、char
,等等),这些类型永远不能null
,也永远不能从中继承。看起来您正在尝试将int
(row
)与null
进行比较。这是一个错误,因为int
永远不能是null
您可能希望改用
Integer
,它是一种引用类型,可以自动转换为int