Возможно, один из самых простых способов решения этой проблемы с использованием метода Arrays.stream приведен ниже,
Формат файла:
Min:1,2,3,5,6
Max:1,2,7,5,6
Avg:1,2,3,5,6
Java код:
package org.personal.TestProject;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.Scanner;
import java.io.FileReader;
public final class MinMaxAvg {
public static int[] toIntArray(String input, String delimiter) {
return Arrays.stream(input.split(delimiter))
.mapToInt(Integer::parseInt)
.toArray();
}
public static void main(String[] args) throws FileNotFoundException {
//Declare Variables
int min ;
int max ;
double avg ;
int sum;
int count = 0;
String[] numArray = new String[3];
int[] maxArray;
int[] minArray;
int[] sumArray;
//Read the text file ('input.txt')
String fileName = "input.txt";
Scanner input = new Scanner(new FileReader(fileName));
//Read the numbers. Get count.
while (input.hasNext()) {
numArray[count] = input.next();
count++;
}
// Convert the comma seperated string to Int array after removing Min:, Max: and Avg: pattern from the string
minArray = toIntArray(numArray[0].replaceAll("Min:",""),",");
maxArray = toIntArray(numArray[1].replaceAll("Max:",""),",");
sumArray = toIntArray(numArray[2].replaceAll("Avg:",""),",");
// Use arrays.stream to find min,max,sum and average. Sum and average is generated for last line
min = Arrays.stream(minArray).min().getAsInt();
max = Arrays.stream(maxArray).max().getAsInt();
sum = Arrays.stream(sumArray).sum();
avg = Arrays.stream(sumArray).average().getAsDouble();
System.out.println(" Min Value " + min);
System.out.println(" Max Value " + max);
System.out.println(" Sum Value " + sum);
System.out.println(" Average Value " + avg);
}
}
Выход ниже,
Min Value 1
Max Value 7
Sum Value 17
Average Value 3.4