java将设定数组int b={78,23,56.34,12,45,67,89}按照从小到大排序,计算并显示输出平均值,最小值,最大值。(25分)
时间: 2024-11-23 08:38:41 浏览: 19
在Java中,你可以使用ArrayList来存储包含浮点数和整数的混合数组,并利用Collections.sort()函数对它进行排序。然后,你可以遍历列表来找到最小值、最大值以及计算平均值。以下是一个简单的示例代码:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
// 创建一个混合类型的数组
Object[] b = {78, 23, 56.34f, 12, 45, 67, 89};
// 转换为Integer和Float数组
Integer[] intArray = Arrays.stream(b).filter(item -> item instanceof Integer)
.mapToInt(Integer::intValue)
.toArray(Integer[]::new);
Float[] floatArray = Arrays.stream(b).filter(item -> item instanceof Float)
.mapToDouble(Float::doubleValue)
.toArray(Float[]::new);
// 合并两个数组并排序
List<Integer> combinedList = new ArrayList<>();
combinedList.addAll(Arrays.asList(intArray));
combinedList.addAll(Arrays.asList(floatArray));
Collections.sort(combinedList);
// 计算平均值
double sum = 0;
for (Number num : combinedList) {
if (num instanceof Integer) {
sum += ((Integer) num).doubleValue();
} else {
sum += num.doubleValue();
}
}
double average = sum / combinedList.size();
// 计算最小值和最大值
int minInt = Collections.min(intArray);
double minFloat = Collections.min(floatArray);
double maxFloat = Collections.max(floatArray);
double maxInt = Arrays.stream(intArray)
.max()
.orElseThrow(() -> new RuntimeException("No integers found in array"));
System.out.println("Sorted array: " + combinedList);
System.out.printf("Average: %.2f%n", average);
System.out.println("Minimum value: " + (minInt == floatArray[0] ? minInt : minFloat));
System.out.println("Maximum value: " + (maxInt == floatArray[0] ? maxInt : maxFloat));
}
}
```
注意,这段代码假设了数组的第一个元素如果是浮点数,则取其作为浮点数的最小值和最大值。如果所有元素都是整数,那么`minInt`将是实际的最小值。
阅读全文