У меня есть задание, которое я уже выполнил. но моему профессору мой подход не понравился.
напишите программу на Java, которая считывает любое количество строк из входного файла.
Входной файл состоит из одного столбца для имен игроков и рядом с ним столбца для очков для каждого игрока.
Найдите
количество прочитанных значений
общую сумму
средний балл (до 2 десятичных знаков)
максимальное значение вместе с соответствующим именем.
минимальное значение вместе с соответствующим именем.
подсказка: обрабатывайте каждый элемент данных по мере его чтения и двигайтесь дальше. Не сохраняйте все данные в своей программе.
Я написал программу, используя 2 списка массивов для хранения данных, а затем отсортировал список массивов в порядке возрастания, а затем выбрал первые и последние данные в отсортированном списке массивов.
Профессору не понравилось, как я работал с программой, потому что он не хочет, чтобы я потреблял так много оперативной памяти, и попросил меня использовать подсказку, упомянутую выше.
Я не уверен, каким подходом мне следует подойти к проблеме. любое предложение будет оценено.
вот часть входного файла
9290 alebam0
9390 davige0
9490 hassa0
9590 luxtt0
9690 raflra0
9790 smithbl0
9890 hallasm0
9990 afflrj0
90 amosre0
190 cottat0
290 luzijc0
3553 philel01
4553 poulcp02
... (тысячи строк)
А вот и мой код
import java.util.*;
import java.io.*;
import java.text.DecimalFormat;
public class GCGC
{
public static void main(String[] args) throws IOException
{
ArrayList names = new ArrayList();
ArrayList scores = new ArrayList();
int nRead = 0; // hold the number of lines
int ListSize; // hold the size of arraylist
final String INPUT_FILE = "/Users/Ali/Desktop/HW1_InputFile.txt";
final String OUTPUT_FILE = "/Users/Ali/Desktop/HW1_Output.txt";
FileWriter fw = new FileWriter(OUTPUT_FILE,false);
PrintWriter pw = new PrintWriter(fw);
File f = new File(INPUT_FILE);
Scanner input = new Scanner(f);
// read all data from input line by line
while (input.hasNext() ) {
scores.add(input.nextInt());
names.add(input.nextLine().trim());
nRead++;
}
ListSize = scores.size(); // size of the arraylist would be used throw the program
int scoresArray[] = new int [ListSize];
String namesArray [] = new String [ListSize];
// This for loop will convert the arraylist into an array
for (int i =0; i