Java 设置布尔方法是否总是输出true?

Java 设置布尔方法是否总是输出true?,java,set,Java,Set,我很难弄清楚为什么这个方法不能正常工作 我的方法addtoHash()总是返回true,出于某种原因,它在返回true之前也只查看第一个值 抱歉,如果这有点混乱,我的代码应该更好地解释它 最初我的代码是这样的,它确实起作用了: public void addtoHash(Set reserve, int value) { if(value > 0 && value < 10) { reserve.ad

我很难弄清楚为什么这个方法不能正常工作

我的方法
addtoHash()
总是返回true,出于某种原因,它在返回true之前也只查看第一个值

抱歉,如果这有点混乱,我的代码应该更好地解释它

最初我的代码是这样的,它确实起作用了:

  public void addtoHash(Set reserve, int value)
    {
        if(value > 0 && value < 10)
        {
            reserve.add(value)
        }
    }

public boolean squareCheck(int[][][] board, int index)
{
    Set<Integer> reserve = new HashSet<>();

    for(int r = 0; r < board[0].length; r++)
    {
        for(int c = 0; c < board[0].length; c++)
        { 
            addtoHash(reserve,board[index][r][c]);
            if(r == 2 && c == 2 && reserve.size() < 9)
            {
              System.out.println("Error in grid " + index);
              return false;
            }


        }
    }
    return true;

}
但是,在运行了几次并使用
System.out.println()
之后,我发现它总是返回
true
;打印出集合后,我发现它只检查了第一个值,因此输出为
[5]true


我的逻辑是否有问题,这就是为什么它总是返回true,还是我缺少了其他东西?

这里的
返回false
是无条件执行的:

因为该代码与此等效:

        if(!addtoHash(reserve,board[index][r][c])) {
            System.out.println("Error at " + index+r+c);
        }
        return false;
你需要这个:

        if (!addtoHash(reserve, board[index][r][c])) {
            System.out.println("Error at " + index + r + c);
            return false;
        }
你所做的是一个很常见的错误。 为此,建议在
if
语句中始终使用大括号, 那样的话,发现这种错误就很容易了


顺便说一句,您可以将
addToHash
简化为:

public boolean addtoHash(Set<Integer> reserve, int value) {
    return 0 < value && value < 10 && reserve.add(value);
}
public boolean addtoHash(设置保留,int值){
返回0
您得到的答案是正确的。此外,对于循环变量,
r
c
都会迭代到
board[0]。length
。在我看来,这似乎是错误的,因为
r
c
不在数组的同一维度中。
        if(!addtoHash(reserve,board[index][r][c])) {
            System.out.println("Error at " + index+r+c);
        }
        return false;
        if (!addtoHash(reserve, board[index][r][c])) {
            System.out.println("Error at " + index + r + c);
            return false;
        }
public boolean addtoHash(Set<Integer> reserve, int value) {
    return 0 < value && value < 10 && reserve.add(value);
}