在测试中创建新的多维数组 class

Make new Multidimensional Array in Test class

我正在玩国际象棋游戏,但我不知道如何进行测试 class 并在该测试中 class 从 ChessClass 创建一个新的数组和测试方法。

My Chess Table class 随机走棋的方法 导入 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]);
            }   
        }
    }



}

我唯一不知道的是如何让它在测试中发挥作用class 我收到错误消息,无法使用 Chess class

中的方法
public class Test {

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

提前致谢

我看到您正在尝试创建一个新的 Chess 对象,但您离这样做还很远,因为 m = new Chess[5][5]; 是用于创建多维数组而不是对象的语法。 然而,这是创建 class 国际象棋新对象的语法。

Chess m = new Chess();

欢迎来到 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;
}

这样你的测试就可以在构造函数中传入数组。还有一点,使用比 's' 更好的变量名,并且测试通常不使用 main。查看 Junit https://github.com/junit-team/junit/wiki/Getting-started

在您的主要方法中,您试图将二维 Chess 数组分配给普通 Chess 对象。

public class Test {

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

应该可以解决您的问题。

此外,我建议您将 RandStart() 更改为 randStart() 良好的编程习惯即可。