我对java很陌生,我目前正在尝试使用“a.i.”完成一个小型Naughts and Crosses程序。如何在枚举中创建多个二维数组?
我决定让计算机通过比较当前的二维char数组和已经设置了多个场景的2d数组的枚举,然后相应地移动它。目前唯一的问题是,我不确定如何在具有特定值的枚举中创建2d char数组。如果任何人都可以指定我将如何完成这个很棒的事情,或者我会以错误的方式解决问题?
有关此事的任何帮助将受到高度重视,谢谢你。
我对java很陌生,我目前正在尝试使用“a.i.”完成一个小型Naughts and Crosses程序。如何在枚举中创建多个二维数组?
我决定让计算机通过比较当前的二维char数组和已经设置了多个场景的2d数组的枚举,然后相应地移动它。目前唯一的问题是,我不确定如何在具有特定值的枚举中创建2d char数组。如果任何人都可以指定我将如何完成这个很棒的事情,或者我会以错误的方式解决问题?
有关此事的任何帮助将受到高度重视,谢谢你。
枚举可以被认为是你有一个类的命名实例的静态引用的类。
用这种方式思考,会引导您在枚举中声明静态2d数组,这与您在任何类中的任何其他静态数据一样。
public enum MyEnum {
Type1,Type2;
private static int [][] _2dArr = new int[10][10];
static {
_2dArr[0][0] = 1;
}
}
一种可能性是 “线性化” 的数据:
public enum Foo {
BAR("1010"), LOL("0101");
private final String data;
private Foo(final String data) {
this.data = data;
}
public char[][] get2DArray() {
// construct from data
}
}
有了这样一个转变:
1 0
0 1 => 1001
这是一个不错的主意。谢谢你=) –
基本上以同样的方式,你会做任何类。不确定你想要什么,但这里是一个例子。
enum Scenario {
ONE(new char[] {
{ 'X', ' ', ' ' },
{ ' ', ' ', ' ' },
{ 'X', ' ', ' ' }
}),
TWO(new char[] {
{ ' ', ' ', ' ' },
{ ' ', 'X', 'X' },
{ ' ', ' ', ' ' }
});
private final char[] board;
private Scenario(char[] board) {
this.board = board;
}
public boolean matches(char[] gameBoard) {
for(int i = 0; i < board.length; i++) {
for(int k = 0; k < board[i].length; k++) {
if(board[i][k] != gameBoard[i][k])
return false;
}
}
return true;
}
}
枚举就是一个类和常量该类的对象。所以你可以创建方法,构造函数等。语法只是有点不同。
,你可以尝试这样的事情
public enum ArrayCheck {
Array1 (new int[][]{
{1 , 0, 1},
{1 , 0, 1},
{1 , 0, 0}
};),
Array2(new int[][]{
{1 , 0, 1},
{1 , 0, 1},
{1 , 0, 0}
};)
int[][] matrix;
ArrayCheck(int[][] matrix) {
this.matrix = matrix;
}
}
你需要访问的枚举在多个地方?如果不是,请为此创建一个类。我建议不要在枚举中放置最简单的状态。 –