Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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.FileReader;
- import java.util.*;
- public class Solution {
- public static void main(String[] args) {
- BufferedReader fileReader = null;
- try {
- fileReader = new BufferedReader(new FileReader(args[0]));
- String line = "";
- ArrayList<String[]> myLines = new ArrayList<String[]>();
- HashSet<String> names = new HashSet<String>();
- while ((line=fileReader.readLine())!=null) {
- try {
- String[]temp = line.split(" ");
- if (isNumeric(temp[1])) {
- myLines.add(temp);
- names.add(temp[0]);
- }
- }
- catch (Exception e){}
- }
- try
- {
- fileReader.close();
- }
- catch (Exception e) {
- }
- HashMap<String, Double> nameValue = new HashMap<String, Double>();
- for (String name : names) {//берем имя из Set names
- double salary = 0;
- for (String[]namVal : myLines) {
- if (name.equals(namVal[0])) {
- salary=salary+Double.parseDouble(namVal[1]);
- }
- }
- nameValue.put(name,salary);
- }
- double max = findMax(nameValue);
- for (Map.Entry<String,Double>entry:nameValue.entrySet()) {
- if ((Double.compare(max,entry.getValue()))==0) {
- System.out.println(entry.getKey());
- }
- }
- fileReader.close();
- }
- /*-------------------------------------------------------------*/
- catch (Exception e) {}
- finally
- {
- if(fileReader!=null) {
- try
- {
- fileReader.close();
- }
- catch (Exception e) {}
- }
- }
- }
- public static boolean isNumeric(String str)
- {
- try
- {
- double d = Double.parseDouble(str);
- }
- catch(Exception nfe)
- {
- return false;
- }
- return true;
- }
- public static double findMax(HashMap<String,Double>someMap){
- return Collections.max(someMap.values());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement