嗨我试着计算一个二维数组的频率。我试图以某种方式显示频率,例如,如果表格如下:
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 :(得分: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));