如何在新数组b中存储sum的值

时间:2017-11-19 19:51:04

标签: java

public class HW9P1
{
   public static void main(String[] args)
   {
      /*int[][] a1 = { { 4, -2, 10 }, 
                     { 19, 3, -5 } };
      int[] b1 = coloumnsum(a1);*/

      int[][] a2 = { { 7, -10 }, 
                     { 4, 13 }, 
                     { 1, 0 } };
      int[] b2 = coloumnsum(a2);

      int i,j;
      for (i=0; i<b2.length; i++)
      {

         System.out.print(b2[i] + " ");


      }

  }
   public static int[] coloumnsum (int[][] a)
   {
      int[] b = new int[a[0].length];
      int i,j, sum= 7;

         for (j=0; j<a[0].length; j++)
         {
            for (i=0; i<a.length; i++)
            {
               sum = sum + a[i][j];


            }
         }
         return b;

   }
}

到目前为止我有这个代码,它给了我来自列的总和。获取和2d数组并返回1d数组。当我运行此代码时,我得到两个00 对于前{2,4}        {1,9}总和应为{3,13}

2 个答案:

答案 0 :(得分:0)

您没有将sum存储回数组b。实际上您不需要sum,只需在数组中直接添加值即可。像,

public static int[] coloumnsum(int[][] a) {
    int[] b = new int[a[0].length];
    for (int j = 0; j < a[0].length; j++) {
        for (int i = 0; i < a.length; i++) {
            b[j] += a[i][j];
        }
    }
    return b;
}

当我进行更改时,您当前的代码会产生(如预期的那样)

12 3

答案 1 :(得分:0)

  1. 如果你想要的话,我不知道为什么你要在7开始计算金额 总结二维数组的列。
  2. 您没有为累加器数组b分配任何内容。
  3. 下面的

    说明了对列进行求和的正确方法:

    public static int[] coloumnsum (int[][] a)
    {
           int[] b = new int[a[0].length];
           for (int i = 0; i < a[0].length; i++){
               for (int j = 0; j < a.length; j++)
                   b[i] += a[j][i];                   
           }        
           return b;  
    }