2017-09-20 55 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

我不認爲你可以總結的地方任何列表或數組沒有環*。*因此,嵌套與否,你不能只用一個 –

+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

ehhhh是:d你確定,美初始化數組的正確方法? –