package com.javarush.test.level19.lesson10.home02; /* Самый богатый В метод main первым параметром приходит имя файла. В этом файле каждая строка имеет следующий вид: имя значение где [имя] - String, [значение] - double. [имя] и [значение] разделены пробелом Для каждого имени посчитать сумму всех его значений Вывести в консоль имена, у которых максимальная сумма Имена разделять пробелом либо выводить с новой строки Закрыть потоки. Не использовать try-with-resources Пример входного файла: Петров 0.501 Иванов 1.35 Петров 0.85 Пример вывода: Петров */ import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import java.util.Map; import java.util.StringTokenizer; import java.util.TreeMap; public class Solution { public static void main(String[] args) throws IOException { BufferedReader idReader = new BufferedReader(new InputStreamReader(new FileInputStream(args[0]), StandardCharsets.UTF_8)); TreeMap<String, Double> list = new TreeMap<>(); String line; double max = Double.MIN_VALUE; while ((line = idReader.readLine()) != null) { StringTokenizer stringTokenizer = new StringTokenizer(line, " "); String name = stringTokenizer.nextToken(); double money = Double.parseDouble(stringTokenizer.nextToken()); if (list.containsKey(name)) list.put(name, (list.get(name) + money)); else list.put(name, money); } for (Double aDouble : list.values()) { if (max < aDouble) max = aDouble; } for (Map.Entry<String, Double> entry : list.entrySet()) { if (entry.getValue() == max) System.out.println(entry.getKey()); } idReader.close(); } }
Leave A Comment