对角矩阵

时间:2019-12-23 12:11:58

标签: java arrays multidimensional-array

我是Java新手。我试图制作一个对角矩阵。我必须在一个对角线“ X”上输入,在另一个对角线“ Y”上输入,其他位置用“-”填充。现在,我无法填充数组。it should look like this this is what I've done till now

3 个答案:

答案 0 :(得分:0)

要填充数组,您必须对其进行迭代。当您有2个尺寸时,您需要以相同的方式遍历两个尺寸,就像打印时一样:

for(int i = o; i < size; i++){
  for(int j = o; j < size; j++){
    //fill here
  }
}

现在您需要知道是否用x,y或-填充。由于您希望在对角线上有x和y,因此需要检查当前位置是否为一个:

if(i == j){
  //diagonal 1
  md[i][j] = 'X';
} else if( (size - 1 - i) == j){
  //diagonal 2
  md[i][j] = 'Y';
} else {
  md[i][j] = '-';
}

将它们放在一起:

for (int i = 0; i < size; i++)
    {
      for (int j = 0; j < size; j++)
      {
        if (i == j)
        {
          //diagonal 1
          md[i][j] = 'X';
        }
        else if ((size - 1 - i) == j)
        {
          //diagonal 2
          md[i][j] = 'Y';
        }
        else
        {
          md[i][j] = '-';
        }
      }
    }

Of因为数组是等距的,所以您可以更轻松地完成它,并用'-'预先填充,然后将x和y放在需要的位置:

for (int j = 0; j < size; j++)
{
  Arrays.fill(md[j], '-');
}

for (int i = 0; i < Math.floor(size / 2.0); i++)
{
  md[i][i] = 'X';
  md[i][size - 1 - i] = 'Y';
  md[size - 1 - i][size - 1 - i] = 'X';
  md[size - 1 - i][i] = 'Y';
}

答案 1 :(得分:0)

检查以下内容以填充矩阵:

  1. i == j :X ---正对角线
  2. i ==(大小-j-1):Y ---向后对角线

用'-'填充其余部分

答案 2 :(得分:0)

根据我对您的问题的理解,结果必须像

Size: 4

0   -   -   -   
-   1   -   -   
-   -   2   -   
-   -   -   3 

对角线必须单独具有值,矩阵的其余部分必须包含“-”。

为此,您可以添加条件以查找看起来像

的对角线
if(i == j) {
    System.out.print(j+"\t");
} else {
    System.out.print("-\t");
}

代替此代码

System.out.printf("%c\t", md[i][j]);

我希望这对您有帮助