在Java中让二维数组变得更少

som*_*ars 3 java arrays javafx

我有一个带有 2d 数组的 Java 代码,我想重写此代码,使其看起来比我之前编写的代码少。

我的代码的主要任务是在 1 中包含立方体。

有什么想法如何解决它吗?

我的数据:

2 0 0 1 1 0 0 0
0 0 1 0 0 1 0 0
0 0 0 0 0 0 0 0
1 0 1 0 0 1 0 1
1 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0
0 0 1 0 0 1 0 0
0 0 0 1 1 0 0 0
Run Code Online (Sandbox Code Playgroud)

我的代码:

 for(int i = 0; i < map.length; i++) {
            for(int j = 0; j < map.length; j++) {
                if(map[i][j] == map[0][3]) {
                    gc.fillRect(i, j, 1, 1);
                }
                if(map[i][j] == map[0][4]) {
                    gc.fillRect(i, j, 1, 1);
                }
                if(map[i][j] == map[1][2]) {
                    gc.fillRect(i, j, 1, 1);
                }
                if(map[i][j] == map[1][5]) {
                    gc.fillRect(i, j, 1, 1);
                }
                if(map[i][j] == map[3][0]) {
                    gc.fillRect(i, j, 1, 1);
                }
                if(map[i][j] == map[3][2]) {
                    gc.fillRect(i, j, 1, 1);
                }
                if(map[i][j] == map[3][5]) {
                    gc.fillRect(i, j, 1, 1);
                }
                if(map[i][j] == map[3][7]) {
                    gc.fillRect(i, j, 1, 1);
                }
                if(map[i][j] == map[4][7]) {
                    gc.fillRect(i, j, 1, 1);
                }
                if(map[i][j] == map[6][2]) {
                    gc.fillRect(i, j, 1, 1);
                }
                if(map[i][j] == map[6][5]) {
                    gc.fillRect(i, j, 1, 1);
                }
                if(map[i][j] == map[7][3]) {
                    gc.fillRect(i, j, 1, 1);
                }
                if(map[i][j] == map[7][4]) {
                    gc.fillRect(i, j, 1, 1);
                }
    
              
            }
        }
Run Code Online (Sandbox Code Playgroud)

小智 5

您将地图中的每个字段与地图中等于 的每个字段进行比较1。所以你可以检查一个字段的值是否为 1:

    for (int i = 0; i < map.length; i++) {
        for (int j = 0; j < map[0].length; j++) {
            if (map[i][j] == 1) {
                gc.fillRect(i, j, 1, 1);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)