魔术广场其他对角线

时间:2015-02-05 02:44:03

标签: java magic-square

我的另一种对角线方式无法正常工作。

public int sumOtherDiag()
{
   int otherDiag = 0;
   for (int i = 0; i < square.length−1; i++)
   {
      otherDiag += square[i][i];
   }
   return otherDiag;
}

我的输出没有显示在这里,但是有什么东西有人看错了吗?

此方法应该添加元素并获得魔方的第二个对角线(从右下方开始)的总和。 例如,如果我的方格是

01 04 03

03 05 04

05 02 04

输出

03 + 05 + 05 = and get 13

但是我的实际输出打印的数字比预期的要少。

(如果没有我的输出,很难解释。我将在以后访问我的程序时上传)

非常感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:1)

public int sumOtherDiag()
{
   int otherDiag = 0;
   int count = square.length;
   for (int i = 0; i < square.length; i++)
   {
      otherDiag += square[i][--count];
   }
   return otherDiag;
}

答案 1 :(得分:1)

让我们分解您的代码,看看您做了什么以及想要什么:

使用您的一个循环,您的坐标为[0,0][1,1]并且根据我的知识错过了[2,2],因为您选择的最后一个索引小于{{1你必须知道索引从零开始到小于square.length−1

如果您运行此代码:

square.lenght

你的结果将是这个

int[][] array = {{01, 04, 03},
        {03, 05, 04},
        {05, 02, 04}
        };
        int otherDiag = 0;
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i][i]);
        }

如果您选择排除1 5 4 ,则输出

array.lenght-1

如你所见,你离开了最后一个4的索引,我相信这不是你想要的。

您想要对角元素求和而不是垂直元素

您想要的坐标是

1 5 [0,2][1,1]

将我的样本用作蓝图以找出您想要的内容

例如,假设[2,0]x = new int[3][4]x[0]x[1]是一维的 数组,每个包含四个元素,如图x[2]x.length所示,和 3x[0].lengthx[1].lengthx[2].length

enter image description here

如何遍历和使用您可以按照以下示例作为蓝图的2D数组:

enter image description here