迭代2D数组;魔术广场

时间:2014-06-01 22:13:51

标签: java multidimensional-array

对于我的夏季Java课程,我正在开发一个程序,用于检测数组中的元素是否为魔方。我不完全确定如何正确迭代数组,以便能够计算单独的列和行的总数,以确定数组是否是魔术方块。我们得到了对角线总和的代码,但我不确定如何接近对角线,行和列。到目前为止,这是我的代码片段。

public class MagicSqaure
{
    public static void main(String[] args)
    {
        int[][] array = 
        {
            {2, 7, 6},
            {9, 5, 1},
            {4, 3, 8}
        };  

public static int getSumOfDownDiagonal(int[][] array)
{
    int total = 0;
    for (int i = 0; i < array.length; i++)
    {
        total += array[i][i];
    }
    return total;
}       

2 个答案:

答案 0 :(得分:0)

因为它是一个类,所以我只能提供如何完成遍历行,列和对角线的帮助,但是根本不提供**代码*。由您来做正确的实施,否则您不会学习,而是复制/粘贴/成为僵尸编码器。

  • 要遍历每一行,请遍历数组数组中的元素,如下所示:

    total += array[i][j];
    

    i未改变但j更改的地方。

  • 要遍历每一列,请遍历数组数组中的元素,如下所示:

    total += array[i][j];
    

    i发生变化但j未发生变化。

  • 要遍历对角线,请浏览数组数组中的元素,如下所示:

    total += array[i][j];
    

    其中i从数组数组的最后一个可能索引处开始,j从数组数组的第一个索引处开始。

答案 1 :(得分:-2)

每当我需要为某些行为推导出方程时,我只需手动编写一些答案,然后寻找模式。首先,让我们假设这是我们访问数组中项目的方式:

       column
        0 1 2
       --------
    0 | 2 7 6
row 1 | 9 5 1
    2 | 4 3 8

(Using array[column][row])

现在让我们获取列的索引:

column 0 = {2, 9, 4} = array[0][0], array[0][1], array[0][2]
column 1 = {7, 5, 3} = array[1][0], array[1][1], array[1][2]

以下是行:

row 0 = {2, 7, 6} = array[0][0], array[1][0], array[2][0]
row 1 = {9, 5, 1} = array[0][1], array[1][1], array[2][1]

这是另一条对角线:

3x3 array = {4, 5, 6} = array[0][2], array[1][1], array[2][0]
4x4 array = array[0][3], array[1][2], array[2][1], array[3][0]

注意任何模式?对于对角线,我们从array [0] [array.length - 1]开始,到数组[array.length - 1] [0]结束。这意味着我们的循环如下:

int total = 0;
for (int i = 0; i < array.length; i++)
{
    total += array[i][array.length - 1 - i];
}
return total;

总结一栏,它是:

int total = 0;
for (int i = 0; i < array.length; i++)
{
    total += array[column_index][i];
}
return total;

对于行:

int total = 0;
for (int i = 0; i < array.length; i++)
{
    total += array[i][row_index];
}
return total;

编辑:为了回应downvotes和评论,我修改了魔术方码以使用行主要约定。哦等等,不,我没有,因为代码是相同的。无论如何,你就是这样做的。

相关问题