定义一个大小为100的float类型的二维数组,使用随机数赋值,java至少用两种方法计算二维数组每行和每列的平均值、标准差、最大值和最小值,并输出。 要求:必须用遍历的方法计算各统计量,另外一种方法可以用stream来计算或第三方类库(apache math3):
时间: 2024-09-22 15:01:47 浏览: 47
2021-2022计算机二级等级考试试题及答案No.102.docx
在Java中,我们可以使用两种方法来完成这个任务:
1. 使用传统循环遍历(手动计算):
```java
import java.util.Random;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
float[][] array = new float[10][100];
Random rand = new Random();
// 初始化二维数组并设置随机值
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 100; j++) {
array[i][j] = rand.nextFloat();
}
}
// 手动计算统计量
for (int row = 0; row < 10; row++) {
double sumRow = 0;
for (float value : array[row]) {
sumRow += value;
}
double meanRow = sumRow / 100.0;
double stdDevRow = calculateStandardDeviation(array[row], meanRow);
double maxRow = Arrays.stream(array[row]).max().orElseThrow(IllegalStateException::new);
double minRow = Arrays.stream(array[row]).min().orElseThrow(IllegalStateException::new);
System.out.printf("Row %d: Mean: %.2f, Std Dev: %.2f, Max: %.2f, Min: %.2f\n", row + 1, meanRow, stdDevRow, maxRow, minRow);
}
// 计算列的统计量类似,这里省略
}
private static double calculateStandardDeviation(float[] values, double mean) {
double sumOfSquares = 0;
for (float value : values) {
sumOfSquares += Math.pow(value - mean, 2);
}
return Math.sqrt(sumOfSquares / values.length);
}
}
```
2. 使用Stream API(Apache Commons Math3不是Java内置的一部分,这里假设已经引入了相关依赖):
```java
import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics;
import java.util.Arrays;
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
// ... (初始化二维数组部分)
// 使用Apache Commons Math3计算统计量
DescriptiveStatistics stats = new DescriptiveStatistics();
for (int i = 0; i < 10; i++) {
for (float value : array[i]) {
stats.addValue(value);
}
double meanRow = stats.getMean();
double stdDevRow = stats.getStandardDeviation();
double maxRow = stats.getMax();
double minRow = stats.getMin();
System.out.printf("Row %d: Mean: %.2f, Std Dev: %.2f, Max: %.2f, Min: %.2f\n", i + 1, meanRow, stdDevRow, maxRow, minRow);
stats.clear(); // 清空统计信息以便处理下一行
}
}
}
```
注意:Apache Commons Math3需要额外安装和导入,如果项目未包含该库,你需要先添加依赖或者使用Java自带的`Math`类进行简单的标准差计算。
阅读全文