如何通过在Java中的空位置添加零使两个不相等的2D数组相等?

时间:2018-09-11 12:18:17

标签: java arrays

可以说我的矩阵A的阶数为3 x 2,矩阵B的阶数为2 x4。我得到的矩阵应该为3 x 4阶数,并且应该包含矩阵A和矩阵B的加法。为了实现这一点,我必须先通过添加必要的零,使矩阵A和矩阵B的大小相等(均为3 x 4)。

示例:-

Encoder

sumArray(a,b)将返回:{{2,1,0,1},{2,2,1,1},{1,0,0,0}}

我尝试过的是。 (ans.length表示结果矩阵长度)

int[][] a = { {1,0}, {1,1}, {1,0} }; 
int[][] b = { {1,1,0,1}, {1,1,1,1} }; 

2 个答案:

答案 0 :(得分:1)

首先,您必须找到输出数组的大小。

int h = a.length>b.length?a.length:b.length;
int w = a[0].length>b[0].length?a[0].length:b[0].length;
int[][] result = new int[h][w];

然后执行您的作业。

for(int i = 0; i<result.length; i++){
    for(int j = 0; j<result[i].length; j++){
        if(i<a.length && j < a[i].length){
            result[i][j] += a[i][j];
        }
        if(i<b.length && j < b[i].length){
            result[i][j] += b[i][j];
        }

    }
}
return result;

答案 1 :(得分:0)

使用此代码。只需使尺寸识别零件动态化

import java.util.Arrays;
public class Main
{

  public static void main (String[]args)
  {
    System.out.println ("Hello World");
    int m1 = 3, n1 = 1, m2 = 2, n2 = 4; // m1 and n1 are matrix 'x' dimensions and m2 & n2 are natrix 'y' dimensions
    int x[][] = {
      {1},
      {2},
      {3}
    };
    int y[][] = {
      {1, 2, 1, 2},
      {1, 2, 1, 2}};

     int op[][] = new int[m1][n2];
     for (int[] row: op)// filling empty matrix with zeroes
     Arrays.fill(row, 0);

    for (int i = 0; i < m1; i++)
      {
    for (int j = 0; j < n1; j++)
      {
        op[i][j] = x[i][j];
      }
      }
    int op2[][] = new int[m1][n2];
    for (int[] row: op2)// filling empty matrix with zeroes
     Arrays.fill(row, 0);

    for (int i = 0; i < m2; i++)
      {
    for (int j = 0; j < n2; j++)
      {
        op2[i][j] = y[i][j];
      }
      }

      for(int i=0;i<m1; i++)
      {
          for(int j=0;j<n2;j++)
          {
              System.out.print((op[i][j]+op2[i][j])+" ");
          }
          System.out.println();
      }

  }
}