0

我的其他对角线方法无法正常工作。

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

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

(没有我的输出很难解释。我稍后会在我访问我的程序时上传)

任何帮助将不胜感激,谢谢!

4

2 回答 2

1

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

在你的一个循环中,你有你的坐标[0,0],根据我的知识[1,1]你错过了[2,2],因为你选择了你的最后一个索引小于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被排除在外,您的输出是

1
5

如您所见,您留下了最后一个索引 4,我相信这不是您要找的。

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

你想要的坐标是

[0,2], [1,1], 和[2,0]

用我的样本作为蓝图来弄清楚你想要什么

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

在此处输入图像描述

如何遍历和 intilize 二维数组,您可以按照以下示例作为蓝图

在此处输入图像描述

于 2015-02-05T03:05:46.377 回答
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;
}
于 2015-02-05T02:55:24.780 回答