2015-12-14 25 views
1

假設存在2D Java數組(4x6用於表示目的)以隨機順序填充範圍從1到9的數字。

如果想要計算個別總和的數組Java 2D數組:通過組條目並對其值進行求和

簡單的例子:
4x6 array containing six 2x2 arrays filled with random numbers

在這種特殊情況下:

  1. 藍色區域
  2. 總和的紫色區域
  3. 總和紅色區域的總和
  4. 黃色區域總和
  5. ...

下面的代碼適用於任何陣列,但只有當每個條目恰恰是1x1的大是在這種情況下(以及任何其他情況下)無用的,因爲它只是通過所有條目去。

for (int a = 0; a < x; a++) { 
    for (int b = 0; b < y; b++) { 
     sum = array[a][b]; 
    } 
} 

你如何通過組條目,然後總結位於單個組中的所有值?

+0

在循環中添加一個條件語句以忽略其他組,如果我們想要得到黃色方塊的成員:if(a> 2)continue ... – Yar

回答

0

startx,starty,endx,endy就是這個答案。您將從start重複至end。這確實要求你知道(或能夠計算)這些變量。如果不是,請澄清確切的結構。

如果陣列可以聲明如下:

int[][] matrix = new int [4][6]; 

一個粗略的例子:

public int sumOfSubMatrix (int startx, int starty, int endx, int endy) { 
    int sum = 0; 
    for (int x = startx; x <= endx; x++) { 
     for (int y = starty; y <= endy; y++) { 
      sum += matrix[x][y]; 
     } 
    } 

    return sum; 
} 

只需每一個 「細胞」 添加到總和變量。

現在,如果「顏色」分散開來,即使一個單元格被關閉,這也是不可能的,那麼算法對他們來說就像他們的位置一樣。如果結構是100%混沌的,那麼你最好的選擇是使用if-guard s的蠻力。

相關問題