2017-01-30 6 views
-1

私はminesweeper problemのコードを書いています。これは、各セルが確率pの爆弾であるMxN地雷探査ゲームを作成します。 m-by-nゲームと隣接する爆弾の数を表示します。 Code:スレッド "main"の例外java.lang.ArrayIndexOutOfBoundsException:0エラー

class Minesweeper { 
    public static void main(String[] args) { 
     int m = Integer.parseInt(args[0]); 
     int n = Integer.parseInt(args[1]); 
     double p = Double.parseDouble(args[2]); 

    try { 
     boolean[][] bombs = new boolean[m+2][n+2]; 
     for (int i = 1; i <= m; i++) 
      for (int j = 1; j <= n; j++) 
       bombs[i][j] = (Math.random() < p); 


     for (int i = 1; i <= m; i++) { 
      for (int j = 1; j <= n; j++) 
       if (bombs[i][j]) System.out.print("* "); 
       else    System.out.print(". "); 
      System.out.println(); 
     } 


     int[][] sol = new int[m+2][n+2]; 
     for (int i = 1; i <= m; i++) 
      for (int j = 1; j <= n; j++) 
       // (ii, jj) indexes neighboring cells 
       for (int ii = i - 1; ii <= i + 1; ii++) 
        for (int jj = j - 1; jj <= j + 1; jj++) 
         if (bombs[ii][jj]) sol[i][j]++; 


     System.out.println(); 
     for (int i = 1; i <= m; i++) { 
      for (int j = 1; j <= n; j++) { 
       if (bombs[i][j]) System.out.print("* "); 
       else    System.out.print(sol[i][j] + " "); 
      } 
      System.out.println(); 
     } 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 

    } 
} 

私はパースの後に任意の条件を与える必要がありますか?

int m = Integer.parseInt(args[0]); 
int n = Integer.parseInt(args[1]); 
double p = Double.parseDouble(args[2]); 

私を助けてください。

+3

可能な複製(http://stackoverflow.com/questions/5554734/what-c​​auses-a-java-lang-arrayindexoutofboundsexception -and-how-do-i-prevent-it) – SomeJavaGuy

答えて

1

引数を解析する前に余分な条件を指定するだけです。 [私はそれを防ぐどうやっjava.lang.ArrayIndexOutOfBoundsExceptionの原因とは?]の

if (args.length >= 3) { 
    m = Integer.parseInt(args[0]); 
    n = Integer.parseInt(args[1]); 
    p = Double.parseDouble(args[2]); 
} 
関連する問題