2015-10-19 19 views
0

我正在研究一個國際象棋遊戲,但我不知道如何創建一個測試類,然後在該測試類中從ChessClass創建一個新的數組和測試方法。在測試類中創建新的多維數組

我的國際象棋表類有一個隨機移動的方法 import java.util.Random;

public class Chess { 

    boolean s [][] = new boolean[8][8]; 
    Knight kn; 
    Random r = new Random(); 

    public void RandStart(){ 
     kn = new Knight(r.nextInt(), r.nextInt()); 
     s [kn.getX()][kn.getY()] = true; 
    } 


    public void print(){ 
     for(int i = 0;i < s.length;i++){ 
      for(int j = 0;j < s[i].length;j++){ 
       System.out.println(s[i][j]); 
      } 
     } 
    } 



} 

我不知道的唯一的事情就是如何使它在測試類 工作,我得到一個錯誤,我不能提前

使用來自國際象棋類的方法

public class Test { 

    public static void main(String[] args){ 
     Chess m = null; 
     m = new Chess[5][5]; 
     m.RandStart(); 
    } 
} 

謝謝

+2

更改'國際象棋m = null; m =新國際象棋[5] [5];'國際象棋m =新國際象棋();' –

+0

謝謝,它的工作。 把它寫成答案 –

+2

但是,如果你不知道如何在Java中創建一個新的對象,那麼嚴重的是,houston你有問題! – QuakeCore

回答

2

在你的主要方法中,你試圖將一個二維Chess數組分配給一個正常的Chess對象。

public class Test { 

    public static void main(String[] args){ 
     Chess m = new Chess(); 
     m.RandStart(); 
    } 
} 

應該解決您的問題。

另外我建議你改變RandStart()randStart()好的編程習慣就是全部。

0

我看到你正在嘗試創建一個新的國際象棋對象,但你很難這樣做,因爲m = new Chess[5][5];是創建多維數組而不是對象的語法。但是,這裏是創建類國際象棋新對象的語法。

Chess m = new Chess(); 
1

歡迎來到Stack Overflow!

它看起來像你希望能夠在測試時動態設置陣列大小。您可以創建兩個構造函數來實例陣列:

boolean s [][] = new boolean[8][8]; 
Knight kn; 
Random r = new Random(); 

public Chess() { 
    s = new boolean[8][8]; 
} 

public Chess(boolean s[][]) { 
    this.s = s; 
} 

這樣,你的測試可以在構造函數中的數組中傳遞。並且只需要幾個nits,使用比's'更好的變量名稱,而測試通常不使用main。退房Junit https://github.com/junit-team/junit/wiki/Getting-started