2013-04-09 4 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 появляется в первом столбце, а затем и так далее. Я не уверен, в чем проблема, которая у меня есть. я заметил, что один он получает на 2-ой итерации перестает работать или он просто выдает 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

ответ

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)); 
Смежные вопросы