如何在枚举中创建多个二维数组?

时间:2014-01-09 17:49:18

标签: java enums

我是java的新手,我目前正尝试用“a.i”制作一个小的Naughts and Crosses程序。

我决定让计算机通过将当前的2d char数组与已经设置了多个场景的2d阵列的枚举进行比较来进行移动,然后相应地移动。目前唯一的问题是我不确定如何在具有特定值的枚举中创建二维char数组。如果有人可以指定我将如何实现这一点,那将是很好的,或者我可能会以错误的方式解决问题?

对此事的任何帮助都会受到高度重视,谢谢。

4 个答案:

答案 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;
        }
}