2015-10-19 82 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