2013-04-22 53 views
0

我一直在研究“死代码”和“无法访问的代码”一段时间,现在我仍然无法弄清楚我的程序中发生了什么问题。这是我所拥有的片段。方法“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? 
+0

的误差会更容易找到,如果你的格式(缩进)您的代码正确。你的IDE甚至可以为你做。 – jlordo 2013-04-22 03:06:18

+0

首先,修复缩进以匹配括号 - 现在它是非常错误的。如果你使用的是一个好的编辑器,它应该能够自动为你做到这一点。 – 2013-04-22 03:06:23

+1

当你返回false时,就退出这个方法。您的代码的2/3码永远不会被执行(又称不可达)。 – Supericy 2013-04-22 03:08:33

回答

4

如果它被缩进正确,我认为这将表明,“返回false”中第一次出现总是会如果第一个执行'返回true'的实例未被命中,因此所有剩余的代码从未达到。

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++) { 
...