用列/行标签表示矩阵

时间:2018-06-27 08:29:05

标签: java arrays matrix

enter image description here

我想用Java创建2d数组,或者用整数创建矩阵。

我已经做过..但是我仍然不知道如何为行/列分配标签。

我希望能够根据行/列访问矩阵内的任何数字

这是我的Java代码

 Gson gson = new Gson();
    int[][] data = {{78, 0, 0, 0, 0}, {0, 54, 0, 0, 0}, {0, 0, 12, 0, 0}, {0, 0, 0, 74, 0}, {0, 0, 0, 0, 11}};
    String json = gson.toJson(data);

    // Convert JSON string into multidimensional array of int.
    int[][] dataHeatMap = gson.fromJson(json, int[][].class);
    for (int[] i : dataHeatMap) {
        for (int j : i) {
            System.out.print(j + " ");
        }
        System.out.println("");
    }
    return json;

2 个答案:

答案 0 :(得分:1)

您可以使用[[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(onAppearanceChanged:) name:@"AppleInterfaceThemeChangedNotification" object:nil] -(void)onAppearanceChanged:(NSNotification *)notificaton { // read appearance }

Enum

答案 1 :(得分:0)

使用ENUM类型,它们确实表示2dim数组的特殊索引。给它们一个名为value / name / ...的字段,并使用它们在数组中的索引进行创建。然后,您可以通过获取代表数组索引的字母值来轻松地对其进行调用。

它非常易读,ENUM.<VALUE>并不代表INT值。因此,这就是您的操作方式。

public enum ROW {
        A(0), B(1), C(2), D(3), E(4);

        private final int value;
        ROW(int value) { this.value = value; }
        public int getValue() { return value; }
    }

    public enum COL {
        F(0), G(1), H(2), I(3), J(4);

        private final int value;
        COL(int value) { this.value = value; }
        public int getValue() { return value; }
    }

    public static void main(String []args){
        int[][] matrix = {{78, 0, 0, 0, 0}, {0, 54, 0, 0, 0}, {0, 0, 12, 0, 0}, {0, 0, 0, 74, 0}, {0, 0, 0, 0, 11}};
        System.out.println("Value: " + matrix[ROW.A.getValue()][COL.F.getValue()]);
    }

我更喜欢上面的方法,因为您可以看到直接发生的事情并可以分配所需的任何值。但是您也可以使用ENUM.ordinal()。 然后data[ROW.a.ordinal()][...]将为ROW返回0,因为它首先列出。 b将返回1,...仅取决于它们在ENUM上列出/创建的方式。