需要将每个数字出现的频率放入一维数组中并输出结果。 2D 到 1D 的部分让我很困惑,我对数组还不太适应。
public static void main( String[] args ){
int matrix [][]=new int[20][2];
for (int row=0;row<matrix.length;row++){
for (int column=0;column<matrix[row].length;column++)
matrix[row][column]=(int)(Math.random()*12+1);
}
frequency(matrix);
public static int frequency(int [][] matrix){
int [] nums =[12];
int count =0;
for (int i=0;i<matrix.length;i++){
for (int j=0; j<matrix[i].length;j++)
(???)
}
return (?);
最佳答案
我猜是这样的:
public static int[] frequency(int [][] matrix){
int [] nums =[14]; // max value can be 13 so you need 14 element
int count =0;
for (int i=0;i<matrix.length;i++){
for (int j=0; j<matrix[i].length;j++) {
nums[matrix[i][j]] += 1;
}
}
return nums;
}
这是一个有点人为的示例,因为通常要收集的值不能很好地落在数组索引上,因此 HashMap 将是更典型的解决方案。
实际上,乘以 2 个随机数(如 Math.random()*Math.random() + 1 )来填充矩阵会更有趣,然后你会在最终的结果中得到一个漂亮的钟形曲线,而不是无聊的白噪声频率分布。
关于java - 计算 2D 数组输出的频率并将其分配给 1D 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3081036/