2016-03-23 8 views
1

Bu Class Diagram kullanarak bir mayın tarama gemisi oyunu oluşturmaya çalışıyorum 2 saat boyunca burada sıkışıp kaldım ve herhangi bir çözüm bulamıyorum ona, GridData sınıfındaki işlevi çağırmaya çalışırken, NullPointerException her zaman heppen, Ayrıca bir dizide öğeyi değiştiremiyorum, Herkesin bir öneri var mı?JAVA 2B diziye itiraz etti, Dizide öğeyi ayarlayamıyorum veya içindeki işlevi çağırmıyor

public GridData[][] board ; 

halka BomberGame (int boardSize, int bombNo) {

int i = 0; 
int j = 0; 
if(boardSize < 3) 
    board = new GridData[3][3] ; 
else 
    board = new GridData[boardSize][boardSize]; 


for (i = 0; i < boardSize; i++) 
    { 
     for (j = 0; j < boardSize; j++) 
     { 
      //board[i][j]BomberGame = 0 ;// here is the problem i can't mess with any element in array 
      board[i][j].setIsOpen(true); // after doing NullPointerException occur 
      board[i][j].gridIsOpen(); 
      System.out.print(board[i][j]+" "); 
     } 
     System.out.println(""); 
    } 

}

Çıkış

null null null 
null null null 
null null null 

Class Diagram

+0

Java'da bir dizi oluşturduğunuzda, tüm değerler "null" olur. İlk önce örnekleri oluşturmalısınız! – BrainStone

cevap

0

new GridData[3][3]; Amaçlı sadece null dizisini alacağım. Sen yaparak onun içinde her eleman başlatmak gerekecek:

for (i = 0; i < boardSize; i++) { 
    for (j = 0; j < boardSize; j++) { 
     board[i][j] = new GridData(); 
    } 
} 

diziyi başlatmak sonra, kodun geri kalanı ile devam edebilirsiniz. Yalnızca dizi oluşturmak Burada

for (i = 0; i < boardSize; i++) { 
    for (j = 0; j < boardSize; j++) { 
     board[i][j] = new GridData(); 
     board[i][j].setIsOpen(true); 
     board[i][j].gridIsOpen(); 
     System.out.print(board[i][j] + " "); 
    } 
    System.out.println(); 
} 
-1
board = new GridData[3][3]; 

: Burada

kod parçacığı olduğunu. Şimdi, dizideki her öğenin de ayrılması gerekiyor. Beğen:

board[i][j] = new GridData();