有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java用小数组替换大数组或映射的一部分

我有一个22X12的地图定义为一个网格的颜色。我有七个可能的对象将出现在这个网格上。每个对象都有一个小的颜色数组,范围从4X1到2X2。有没有什么数学或关键字可以让我进一步了解如何将较小的数组放在较大的数组中,覆盖较大的数组值

为了给出一个我想要实现的小例子,我将使用一个更大的整数映射和一个更小的整数数组以及我想要的作为输出

地图:

1 1 1 1 1 1
1 0 0 0 0 1
1 0 0 0 0 1
1 0 0 0 0 1
1 1 1 1 1 1

较小的阵列:

1 0
0 1

将数组放置在以下位置后的贴图:

1 1 1 1 1 1
1 0 1 0 0 1
1 0 0 1 0 1
1 0 0 0 0 1
1 1 1 1 1 1

我只需要一个地方开始。有没有一个线性代数的概念,我可以查一下,或者有什么方法可以做这类事情?我正在努力确定如何着手做这件事。多谢各位


共 (2) 个答案

  1. # 1 楼答案

    public static void main (String[] args) {
        int[][] bigMap = new int[][] {
                { 1, 1, 1, 1, 1, 1 },
                { 1, 0, 0, 0, 0, 1 },
                { 1, 0, 0, 0, 0, 1 },
                { 1, 0, 0, 0, 0, 1 },
                { 1, 1, 1, 1, 1, 1 }
        };
    
        int[][] smallMap = new int[][] {
                { 1, 0 },
                { 0, 1 }
        };
    
        overwriteArray(bigMap, smallMap, 1, 1);
    
        // print out the 2d array
        for (int i = 0; i < bigMap.length; i++) {
            for (int j = 0; j < bigMap[0].length; j++) {
                System.out.print(" " + bigMap[i][j]);
            }
            System.out.println();
        }
    
    }
    
    static void overwriteArray(int[][] big, int[][] small, int x, int y) {
        for (int i = 0; i < small.length; i++) {
            for (int j = 0; j < small[i].length; j++) {
                big[x+i][y+j] = small[i][j];
            }
        }
    }
    
  2. # 2 楼答案

    for (int y = 0; y < small.length; ++y)
      for (int x = 0; x < small[y].length; ++x)
        large[y + replace_y][x + replace_x] = small[y][x];