我對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;
}
}
你需要訪問的枚舉在多個地方?如果不是,請爲此創建一個類。我建議不要在枚舉中放置最簡單的狀態。 –