2013-04-09 99 views
-1

嗨即時嘗試計算2d數組的頻率。我試圖在例如以某種方式顯示頻率,如果一個表是這樣的:數組無法正常工作

0:1 2 0

1:2 0 1

2:1 0 2

我想可以算像頻率:

0:0 2 1

1:2 0 1

2:1種1 1

這樣的方式,該表將要被多少次0出現在第一列中多少次1在第一列中出現,然後依此類推。我不知道我有什麼問題。我注意到一個它得到它停止工作第二次迭代或者它只是給出了0

代碼我到目前爲止這是

for (int col =0; col< s ; col++){ 
     System.out.print(col+ ": "); 
     for (int row = 0; row<s; row++) 
     { 
      x=val[row][col]; 
      if (table[row][col]==row) 
      { 
       System.out.print(x++ + " "); 
      } 

      //System.out.print(val[col][row]+" "); 
      if (row+1==s) 
       System.out.println(); 
     } 
    } 




} 

感謝

+0

如何爲這個問題從原來的位置不同:http://stackoverflow.com/questions/15893431/how-to-count-frequency-for-a-2d-array? – Perception 2013-04-09 08:16:16

回答

0

假設規則形狀的陣列。 爲了使它更健壯,你需要檢測最大列數。

int[][] table = new int[][]{{1,2,0},{2,0,1},{1,0,2}}; 
int[][] result = new int[table.length][table.length]; 
for (int row = 0; row<result.length;row++){ 
    Arrays.fill(result[row], 0); 
} 

// iterating through multi dimensional arrays it is easier to start 
// with dimension 0 
for (int row = 0; row<table.length;row++){ 
    for (int col =0; col< table[row].length ; col++){ 
    // the row in the result table equals the value of the cell. 
    int index = table[row][col]; 
    result[index][col]++; 
    } 
} 

System.out.println(Arrays.deepToString(result));