2017-11-19 6 views
2
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; 

    } 
} 

私は今までこのコードを持っています。これはcolumns.Takesと2d配列から1d配列を返します。私はこのコードを実行すると、私は、ex {2,4}、{1,9} 合計2 00 を得るあなたが戻って配列bにあなたsumを格納していない{3,13}新しい配列にsumの値を格納するにはどうすればいいですか?b

+0

iが提供されたコードの場合、答えは{12、3}であるべきです。私はまた、新しい配列bの合計の値を格納する必要がありますが、私はそれを行う方法がわからないと思う。和の場合、コードが実行されているかどうかを確認するために、[0] [0]の最初の値をハードコードしました。行iはiを使用し、列iはjを使用しました – Asrar

答えて

0

でなければなりません。実際には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 
+0

私は合計で快適でした。私は配列に合計を格納する方法を知りたかった。 – Asrar

+0

@Asrar 'b [j] = sum;' - もちろん、 'sum = 0'を追加する前に(すべての列に)追加する必要があります。 –

+0

最後の1つ1つのループを使ってb1とb2の両方をどのように印刷するのですか? I 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; (i = 0; i Asrar

0
  1. あなたが望むすべてがある場合は7で合計を開始している理由を私は知りません を使用して、2D配列の列を合計します。
  2. アキュムレータアレイbに何も割り当てていません。以下

列を合計する正しいアプローチを示す:

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; 
} 
+0

*例外が発生します。しかし、変更は、もはやそうではないはずです。* 'int [] [] a2 = {{1}、{2,3}、{3,4,5}};' - 'int [] b = new int [a [0] .length];' –

+0

@ElliottFrisch私の悪いコピー/貼り付けの問題です。それを指摘してくれてありがとう。 –

+0

これは行数です。ギザギザの配列の列の数を取得するきれいな方法はありません。 –

関連する問題