2017-09-20 10 views
0
public class Labwork 
{ 
    public static void main(String[] args) 
    { 
     int [][] x = { {1, 2, 3}, {4, 5, 6, 7, 8}, {11, 12} }; 
     int [][] y = { {20, 12}, {10, 11}, {12, 13, 14, 15} }; 
     int [][][] z = { x, y }; 
     System.out.println("" + sum(x) + " Expected: 59"); 
     System.out.println("" + sum(y) + " Expected: 107"); 
     System.out.println("" + sum(z) + " Expected: 166"); 
    } 
    //sums up 2d array 
    public static int sum (int [][] a) 
    { 
     int sum = 0; 
     for(int b = 0; b < a.length; b++) 
     { 
     for(int c = 0; c < a[b].length; c++) 
     { 
      sum += a[b][c]; 
     } 
     } 
     return sum; 
    } 
    //sums up 3d array 
    public static int sum (int [][][] a) 
    { 
     int sum = 0; 
     for(int d = 0; d < a.length; d++) 
     { 
     for(int e = 0; e < a[d].length; e++) 
     { 
      for(int f = 0; f < a[d][e].length; f++) 
      { 
       sum += a[d][e][f]; 
      } 
     } 
     } 
     return sum; 
    } 
} 

私の割り当ての最初の部分は、出力が予想される合計になるようにsumメソッドを終了することでした。今では、合計メソッドを変更して、1つのループを使用してタスクを完了する必要があります。私はどこから始めるべきか分からず、助けていただければ幸いです。ネストされたループのない配列を合計するにはどうすればよいですか?

+1

代わりにネストしたストリームを使用 –

+1

ループ*アイドル*なしでリストや配列を合計することはできません。したがって、入れ子にするかどうかは、1つしか使用できません。 –

+0

https://stackoverflow.com/questions/4550662 –

答えて

1
import java.util.stream.IntStream; 

このint sumA=IntStream.of(AA).sum(); AAは、私たちのint配列で使用してください。

多次元配列を持つので、すべてをストリームにマップする必要があります。 これを試してみてください。

IntStream intStream = Arrays.stream(a).flatMapToInt(x -> Arrays.stream(x)); 
    int sum = intStream.sum(); 
+0

これは輸入が必要ですか?それをコードのどこに置くのですか? – Philip

+0

@Philip 'import'はトップ' public class'の上になります。そして、あなたはこのためにJava8が必要です –

+0

はい:Dあなたは正しい配列を初期化してもよろしいですか? –

関連する問題