编写一个Java程序,定义一个类并在该类中编写函数calc,传入一个整型数组(一维数组),使其能够计算出该数组中的最大值、最小值、平均值,让主函数调用这个函数并获得这些求出的值。(两种方法)
时间: 2024-10-14 07:17:14 浏览: 40
在Java中,我们可以创建一个名为`ArrayCalculator`的类,包含一个静态方法`calculation`来计算数组的最大值、最小值和平均值。以下是两种实现方法:
**方法一:**
```java
public class ArrayCalculator {
public static void main(String[] args) {
int[] numbers = {5, 10, 15, 20, 25}; // 示例数组
maxMinAvg(numbers);
System.out.println("最大值: " + getMaxValue(numbers));
System.out.println("最小值: " + getMinValue(numbers));
System.out.println("平均值: " + getAverageValue(numbers));
}
public static void calculation(int[] array) {
if (array == null || array.length == 0) {
throw new IllegalArgumentException("数组不能为空");
}
int maxValue = array[0];
int minValue = array[0];
double sum = 0;
for (int num : array) {
sum += num;
if (num > maxValue) {
maxValue = num;
} else if (num < minValue) {
minValue = num;
}
}
double average = sum / array.length;
System.out.println("内部计算结果:");
System.out.println("最大值: " + maxValue);
System.out.println("最小值: " + minValue);
System.out.println("平均值: " + average);
}
private static int getMaxValue(int[] array) {
return Arrays.stream(array).max().getAsInt();
}
private static int getMinValue(int[] array) {
return Arrays.stream(array).min().getAsInt();
}
private static double getAverageValue(int[] array) {
return Arrays.stream(array).average().orElse(0d);
}
}
```
**方法二:**
在这个版本中,我们使用Java 8的Stream API简化了一些计算过程:
```java
import java.util.Arrays;
public class ArrayCalculator {
public static void main(String[] args) {
int[] numbers = {5, 10, 15, 20, 25};
calculateStats(numbers);
System.out.println("最大值: " + getMaxValue(numbers));
System.out.println("最小值: " + getMinValue(numbers));
System.out.println("平均值: " + getAverageValue(numbers));
}
public static void calculateStats(int[] array) {
if (array == null || array.length == 0) {
throw new IllegalArgumentException("数组不能为空");
}
System.out.println("最大值: " + Arrays.stream(array).max().getAsInt());
System.out.println("最小值: " + Arrays.stream(array).min().getAsInt());
System.out.println("平均值: " + Arrays.stream(array).average().orElse(0d));
}
private static int getMaxValue(int[] array) {
return Arrays.stream(array).max().getAsInt();
}
private static int getMinValue(int[] array) {
return Arrays.stream(array).min().getAsInt();
}
private static double getAverageValue(int[] array) {
return Arrays.stream(array).average().orElse(0d);
}
}
```
这两种方法都会在控制台上打印出数组的最大值、最小值和平均值。注意在实际应用中,根据需求可以选择合适的方法。
阅读全文