0

「デッドコード」と「到達不能コード」をしばらく調査してきましたが、プログラムでこの問題で何が起こっているのかまだわかりません。これは私が持っているものの一部です。Tic Tac Toe の勝者をチェックするメソッド「gameEnd()」:

private boolean gameEnd() {
    // Setting local variables
    int x = xMouseSquare;
    int y = yMouseSquare;
    int[][] g = gameBoard;
    int c = CPU;
    int h = HUMAN;

    // Checking for a winner

    /* Checking columns (xMouseSquare)
     * Enter the y value, the vertical value, first; then x, the horizontal value, second
     */

    // Set y equal to 0 and then add 1
    for (y = 0; y < 3; y++) {
        // Set CPU c equal to 0
        c = 0;
        // Set x equal to 0 and then add 1
        for (x = 0; x < 3; x++) {
            // Add CPU's value to the game board 
            c += g[x][y];

            // If statement returning the absolute value of CPU
            if (Math.abs(c) == 3) {
                // If these values are correct, return true; the game ends with CPU win horizontally
                return true;
            }
        }
    }
    // If not, return false; game continues until all marks are filled
    return false;
    // Set y equal to 0 and then add 1
    for (y = 0; y < 3; y++) {
        // This time, however, set HUMAN h equal to 0
        h = 0;
        // Set x equal to 0 and then add 1
        for (x = 0; x < 3; x++) {
            // Then add HUMAN's value to the game board
            h += g[x][y];
            // If statement returning the absolute value of HUMAN
            if (Math.abs(h) == -3) {
                // If these values are correct, return true; the game ends with HUMAN win horizontally
                return true;
            }
        }
    }
    // If not, return false; game continues until all marks are filled

    return false;
    {
        /* Checking rows (yMouseSquare)
         * Enter the x value, the horizontal value, first; then y, the vertical value, second
         */
        // Set x equal to 0 and then add 1
        for (x = 0; x < 3; x++) {
            // Set CPU equal to 0
            c = 0;
            // Set y equal to 0 and then add 1
            for (y = 0; y < 3; y++) {
                // Add CPU's value to the game board, but with y and then x
                c += g[y][x];
                // If statement returning the absolute value of CPU
                if (Math.abs(c) == 3) {
                    // If these values are correct, return true; the game ends with CPU win vertically
                    return true;
                }
            }
        }
        // If not, return false; game continues until all marks are filled
        return false;
        {
            // Set x equal to 0 and then add 1
            for (x = 0; x < 3; x++) {
                // This time, however, set HUMAN h equal to 0
                h = 0;
                // Set y equal to 0 and then add 1
                for (y = 0; y < 3; y++) {   
                    // Then add HUMAN's value to the game board
                    h += g[x][y];
                    // If statement returning the absolute value of HUMAN
                    if (Math.abs(h) == -3) {
                        // If these values are correct, return true; the game ends with CPU win vertically
                        return true;
                    }
                }
            }
            // If not, return false; game continues until all marks are filled
            return false;
        }
    }
}
} // error on this bracket; but when I remove it, some of the code above becomes unreachable. Can anyone point to what I'm doing wrong?
4

2 に答える 2

4

適切にインデントされていれば、「return true」の最初のインスタンスがヒットしなかった場合、「return false」の最初の出現が常に実行されることが示されると思います。したがって、残りのすべてのコードに到達することはありません。

于 2013-04-22T03:11:03.707 に答える
1

ここにあなたの問題があります

// If not, return false; game continues until all marks are filled
        return false; <-- code exits here, everything below will not run.
        {
            // Set x equal to 0 and then add 1
            for (x = 0; x < 3; x++) {
...
于 2013-04-22T04:55:08.130 に答える