【问题标题】:Create algorithm to add values of primary diagonals in a java 2d array创建算法以在 java 2d 数组中添加主对角线的值
【发布时间】:2014-01-27 00:28:31
【问题描述】:

我是这个论坛的新手,所以如果这已经被覆盖,请原谅我。 我的课堂作业包括以下内容:

  • 创建一个 10 x 10 的 int 数据类型二维数组
  • 用行+列之和加载数组中的每个索引位置
  • 创建和算法将添加对角线索引中的所有值 从 0,0 到 9,9 并打印总数
  • 创建和算法将添加对角线索引中的所有值 从 0,9 到 9,0 并打印总数
  • 打印两条对角线的相加

我在创建数组时没有问题,但是对于如何添加主对角线我感到很困惑。它尝试了我在另一个帖子上看到的解决方案,但我一直得到返回总值,说明它不能是 void 类型。无论如何,这是我到目前为止的代码:

import java.util.*;
import java.io.*;
import static java.lang.System.out;

public class AddDiagonals2
{
    public static void main (String args[])
    {
    int[][] numbers = new int [10][10];
        row = 0; col = 0;
        int sum1 = 0, sum2 = 0;
        for (int row = 0; row < numbers.length; row++)
     {
         for (int col = 0; col < numbers[row].length; col++)
         {
             numbers[row][col] = row + col;
             out.print (numbers[row][col] +"\t");
         }
         out.println();
    }

这是我试图从另一篇文章中添加的计算对角线的内容,但它不起作用。

        for (int row = 0; row < numbers.length; row++)
        {
            sum1 = sum1 + numbers[row][row];
        }
        row = numbers.length-1;
        for (col = 0; col < numbers.length; col++)
        {
            if (col >= 0)
        {
             sum2 = sum2 + numbers[row][col];
             col--;
        }
        out.println ("Sum of the Diagonal elements are : " + sum1 + " and " + sum2);
}

}

【问题讨论】:

  • 您需要在 [0][0]、[1][1]、[2][2] 的位置添加整数...看到模式了吗?第二部分是[0][9]、[1][8]、[2][7]……也是一个简单的模式。

标签: java arrays algorithm


【解决方案1】:
sum2 = sum2 + numbers[row][col];

不应该是[col][col]吗?我只是略读了一下,我可能错了。

【讨论】:

    【解决方案2】:
     for (col = 0; col < numbers.length; col++)
            {
                if (col >= 0)
            {
                 sum2 = sum2 + numbers[row][col];
                 col--;
            }
    

    您在循环头中增加 col 并在循环体中再次减少它。您希望 col 从 0 到 9 并且 row 从 9 到 0(或相反)。由于您从 0 开始 col 并从 numbers.length-1 开始行,因此每个循环递增 col 和递减 row 一次。 请注意,您实际上可以在 for 循环头中执行此操作,使用 , 分隔语句:

    for (col = 0; col < numbers.length; col++, row--)
    

    【讨论】:

      猜你喜欢
      • 2018-07-03
      • 2023-01-24
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      相关资源
      最近更新 更多