CodeHS Battleship Java

时间:2017-02-14 13:53:13

标签: java

我目前正在网上编码以学习编码并且正在做战舰问题。在这个问题中,您将获得方法以及它们在代码中接受的参数。

我遇到了用户输入行和列的问题,代码会验证是否输入了行和列。

// Has the location been initialized
public boolean isLocationSet()
{
    if(row == null  && col == null)
    {
        return false;
    }

    return true;
}

我得到的错误说:无法比较的类型int和(它切断但我假设它意味着null或布尔值)

如果预期的整数rowcolumn为空,则返回false,我怎么能说,否则返回true?

2 个答案:

答案 0 :(得分:0)

冲突是由Java中的the difference between primitive types and reference types造成的。 Java有一些内置类型(intbooleanfloatchar等),它们永远不会是null,永远不能继承。您似乎正在尝试将introw)与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。大概您的rowcol变量初始化为0。因此,例如,如果row=1只有col=0,那么此isLocationSet()方法将返回false,这是因为其中一个位置变量row和{{1}尚未设定。

如果要检查null,可以使用col

Integer