2016-03-14 128 views
-1
int sum = 0; 

     for (int i = 0; i < counts.length; i++)  
     { 
      sum = sum + counts[i]; //doesnt work says + bad operator first type int second type int[] 

     } 
     return sum; 

我認爲這樣會工作,但它不會使我能做些什麼?使用int []添加int

public static void main(String[] args) { 
int[][] counts = 
    { 
     { 1, 0, 1 }, 
     { 1, 1, 0 }, 
     { 0, 0, 1 }, 
     { 1, 0, 0 }, 
     { 0, 1, 1 }, 
     { 0, 1, 1 }, 
     { 1, 1, 0 } 
    }; 
    int sum = ArrayUtil.rowSum(counts, 5); 
    System.out.println(sum); 
    System.out.println("Expected: 2"); 

    int[][] magicSquare = { 
    { 16, 3, 2, 13 }, 
    { 5, 10, 11, 8 }, 
    { 9, 6, 7, 12 }, 
    { 4, 15, 14, 1 }, 
    }; 

    for (int row = 0; row <= 3; row++) 
    { 
    System.out.println(ArrayUtil.rowSum(magicSquare, row)); 
    System.out.println("Expected: 34"); 
    } 
} 
    public static int rowSum(int[][] counts, int row) 
    { 
     int sum = 0; 

     for (int i = 0; i < counts.length; i++)  
     { 
      sum = sum + counts[i];  

     } 
     return sum; 
    } 

添加了我的完整代碼。感謝提前幫助。 它不工作,因爲計數[我]是二維數組的一部分?

+0

我猜這是一個int數組,對嗎? –

+2

什麼不起作用?你的輸入和輸出是什麼,輸出與預期的有什麼不同?或者做了一些沒有編譯? –

+1

什麼不起作用?代碼片段看起來很好(至少你向我們展示了什麼)。 –

回答

1

得到

public static int rowSum(int[][] counts, int row) { 
    int sum = 0; 
    for (int value : counts[row]) { 
     sum += value; 
    } 
    return sum; 
} 

如果您試圖對二維數組的一行進行求和,則您的方法應如下所示:

public static int rowSum(int[][] counts, int row) { 
    int sum = 0; 
    for (int count : counts[row]) { 
     sum += count; 
    } 
    return sum; 
} 
0

countsint(即int[][])的2D陣列不能添加int[]int

如果要總結的counts值,考慮下面的代碼:

int sum = 0; 
for(int i = 0; i < counts.length; i++) { 
    for(int j = 0; j < counts[i].length; j++) { 
     sum += counts[i][j]; 
    } 
} 
1

counts是一個多維數組,所以你需要遍歷包含內部數組(S)內的值得到您的sum。使用for-each loops可能看起來像,

int sum = 0; 
for (int[] array : counts) { // <-- for each array in counts 
    for (int value : array) { // <-- for each value in the array 
     sum += value;   // <-- add the value to the sum 
    } 
} 

運用同一個循環結構rowSum,我們可以使用Java 8+ IntStream

public static int rowSum(int[][] counts, int row) { 
    return IntStream.of(counts[row]).sum(); 
} 
0

我做了這個遞歸,因爲每個人都發布了自己的答案,所以我做了這種遞歸的方式。

int rowSum(int a[][], int row, int col) {  
    if (row == a.length-1) 
     return a[row][col];  
    if(col == a[row].length-1) 
     return a[row][col]+rowSum(a,row+1,0);  
    return a[row][col]+rowSum(a,row,col+1); 
} 

希望你找到我的答案有幫助。