Java:如果条件为假并且仍然执行

Ede*_*ont 1 java if-statement boolean

我尝试过寻找,但没有在任何地方找到答案,而且我不知道问题出在哪里。

执行程序时, 的值为calc!=oddfalse,我什至让控制台打印它的值以确保紧接着 if 语句执行并向 main 返回 false

calc!=even使用不同大小的矩阵做同样的事情

我真的不知道问题出在哪里,希望有人能澄清一下,谢谢。

public class snake {

    public static void main(String[] args) {
        int[][] matrix = new int[5][7];
        putNumbers(matrix);
        printMatrix(matrix);
        System.out.println("the matrix is snake? " + isSnake(matrix, matrix.length));
    }

    private static Boolean isSnake(int[][] matrix, int length) {
        length--;
        int calc,
        odd = -1,
        even = 1;
        for (int i = 0; i < (matrix[length].length - 2); i++) {
            calc = matrix[length][i] - matrix[length][i + 1];
            if (length % 2 == 0) {
                System.out.println(calc != odd); //value is false - prints
                if (calc != odd); //executes anyway even when false
                {
                    return false;
                }
            }
            else {
                   System.out.println(calc != even);
                   if (calc != even); {
                      return false;
                }
            }
        }
        if (length == 0) return true;
        return isSnake(matrix, length - 1);
    }

    private static void putNumbers(int[][] matrix) {
        int n = 1;
        for (int i = 0; i < matrix.length; i++) {
            if (i % 2 == 0) {
                for (int j = 0; j < matrix[i].length; j++, n++) {
                    matrix[i][j] = n;
                }
            } else {
                for (int j = matrix[i].length - 1; j >= 0; j--, n++) {
                    matrix[i][j] = n;
                }
            }
        }

    }

    private static void printMatrix(int[][] matrix) {
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++)
            System.out.printf("%d\t", matrix[i][j]);
            System.out.println();
        }
        System.out.println();

    }

}
Run Code Online (Sandbox Code Playgroud)

Rah*_*hul 5

 if(length%2==0)
        {
            System.out.println(calc!=odd);  //value is false - prints
            if (calc!=odd);                 // <<-- NOTE THE SEMICOLON
            {
                return false;
            }
        }
Run Code Online (Sandbox Code Playgroud)