我是java的新手,我目前正尝试用“a.i”制作一个小的Naughts and Crosses程序。
我决定让计算机通过将当前的2d char数组与已经设置了多个场景的2d阵列的枚举进行比较来进行移动,然后相应地移动。目前唯一的问题是我不确定如何在具有特定值的枚举中创建二维char数组。如果有人可以指定我将如何实现这一点,那将是很好的,或者我可能会以错误的方式解决问题?
对此事的任何帮助都会受到高度重视,谢谢。
答案 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
答案 1 :(得分:0)
可以将枚举视为可以对该类的命名实例进行静态引用的类。
以这种方式思考会让您想到在枚举中声明静态2d数组的想法与在任何类中的任何其他静态数据相同。
public enum MyEnum {
Type1,Type2;
private static int [][] _2dArr = new int[10][10];
static {
_2dArr[0][0] = 1;
}
}
答案 2 :(得分:0)
基本上和你做任何课程一样。不确定你想要什么,但这是一个例子。
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;
}
}
Enum只是一个类,常量是该类的对象。所以你可以创建方法,构造函数等。语法略有不同。
答案 3 :(得分:0)
你可能会尝试这样的事情
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;
}
}