为了账号安全,请及时绑定邮箱和手机立即绑定

在java中复制二维数组的每第二行和每第二列

在java中复制二维数组的每第二行和每第二列

繁花不似锦 2021-11-24 15:06:07
我有一个二维整数数组,我需要使用 java 复制二维数组的每一行和每一列,如下所示(覆盖现有值,而不是创建新列/行):当前方法     for(int i = 0; i < result.get(z).getWidth()-2; i+=1)    {   for(int j = 0; j < result.get(z).getHeight()-2; j+=1)    {           x[i+1][j] = result.get(z).getRGB(i, j);        x[i][j+1] = result.get(z).getRGB(i, j);        x[i+1][j+1] = result.get(z).getRGB(i, j);    }}
查看完整描述

2 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

if/else 的另一种方法:


private static void duplicateAlternatesWithIfElse(int[][] matrix) {

        for (int row = 0; row < matrix.length; row++) {

            for (int col = 0; col < matrix.length; col++) {

                if ((row - 1) % 2 == 0) {

                    matrix[row][col] = matrix[row - 1][col];

                } else if ((col - 1) % 2 == 0) {

                    matrix[row][col] = matrix[row][col - 1];

                }

            }

        }

    }

使用主函数测试:


public static void main(String[] args) {

        int[][] twoDimArray = { 

                { 10, 17, 200, 255, 0 }, 

                { 0, 199, 100, 30, 45 }, 

                { 250, 23, 177, 180, 79 },

                { 0, 9, 14, 150, 70 }, 

                { 50, 55, 187, 10, 233 } 

        };


        printMatrix(twoDimArray);

        duplicateAlternatesWithIfElse(twoDimArray);

        printMatrix(twoDimArray);


    }

输出:


  10  17 200 255   0

   0 199 100  30  45

 250  23 177 180  79

   0   9  14 150  70

  50  55 187  10 233


  10  10 200 200   0

  10  10 200 200   0

 250 250 177 177  79

 250 250 177 177  79

  50  50 187 187 233


查看完整回答
反对 回复 2021-11-24
?
大话西游666

TA贡献1817条经验 获得超14个赞

替代方法:


private static void duplicateAlternates(int[][] matrix) {

    for (int row = 0; row < matrix.length; row += 2)

        for (int col = 1; col < matrix.length; col += 2)

            matrix[row][col] = matrix[row][col - 1];

    for (int row = 1; row < matrix.length; row += 2)

        for (int col = 0; col < matrix.length; col++)

            matrix[row][col] = matrix[row - 1][col];

}

测试


public static void main(String[] args) {

    int[][] matrix = { {  10,  17, 200, 255,   0 },

                       {   0, 199, 100,  30,  45 },

                       { 250,  23, 177, 180,  79 },

                       {   0,   9,  14, 150,  70 },

                       {  50,  55, 187,  10, 233 } };

    print(matrix);

    duplicateAlternates(matrix);

    print(matrix);

}

private static void print(int[][] matrix) {

    for (int row = 0; row < matrix.length; row++) {

        for (int col = 0; col < matrix[row].length; col++)

            System.out.printf(" %3d", matrix[row][col]);

        System.out.println();

    }

    System.out.println();

}

输出


  10  17 200 255   0

   0 199 100  30  45

 250  23 177 180  79

   0   9  14 150  70

  50  55 187  10 233


  10  10 200 200   0

  10  10 200 200   0

 250 250 177 177  79

 250 250 177 177  79

  50  50 187 187 233


查看完整回答
反对 回复 2021-11-24
  • 2 回答
  • 0 关注
  • 132 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信