-1

こんにちは、2次元配列の頻度を数えようとしています。たとえば、テーブルが次のような場合、特定の方法で頻度を表示しようとしています:

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();
        }
    }




}

ありがとう

4

1 に答える 1

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));
于 2013-04-09T08:02:31.230 に答える