Advertisement
jaVer404

level19.lesson10.home02(seems like it works)

Feb 23rd, 2016
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.22 KB | None | 0 0
  1. package com.javarush.test.level19.lesson10.home02;
  2.  
  3. /* Самый богатый
  4. В метод main первым параметром приходит имя файла.
  5. В этом файле каждая строка имеет следующий вид:
  6. имя значение
  7. где [имя] - String, [значение] - double. [имя] и [значение] разделены пробелом
  8.  
  9. Для каждого имени посчитать сумму всех его значений
  10. Вывести в консоль имена, у которых максимальная сумма
  11. Имена разделять пробелом либо выводить с новой строки
  12. Закрыть потоки. Не использовать try-with-resources
  13.  
  14. Пример входного файла:
  15. Петров 0.501
  16. Иванов 1.35
  17. Петров 0.85
  18.  
  19. Пример вывода:
  20. Петров
  21. */
  22.  
  23. import java.io.BufferedReader;
  24. import java.io.FileReader;
  25. import java.io.IOException;
  26. import java.util.*;
  27.  
  28. public class Solution {
  29.     public static void main(String[] args) {
  30.         BufferedReader fileReader=null;
  31.         try
  32.         {
  33.             fileReader = new BufferedReader(new FileReader(args[0]));
  34.             String textLine="";
  35.             ArrayList<String[]> goodLines = new ArrayList<String[]>();
  36.             String []parsedLine;
  37.  
  38.             TreeSet<String> names = new TreeSet<String>();
  39.             while ((textLine=fileReader.readLine())!=null) {
  40.                 try
  41.                 {
  42.                     parsedLine=textLine.split(" ");
  43.                     if (parsedLine.length==2) {
  44.                         goodLines.add(parsedLine);
  45.                         names.add(parsedLine[0]);
  46.                     }
  47.                 }
  48.                 catch (Exception e) {}
  49.             }
  50.             fileReader.close();
  51.             TreeMap<String, Double> map = new TreeMap<String, Double>();
  52.             for (String s : names) {
  53.                 double salary=0;
  54.                 for (String[]items : goodLines) {
  55.  
  56.                         if (s.equals(items[0])){
  57.                             try
  58.                             {
  59.                             salary=salary+Double.parseDouble(items[1]);}
  60.                             catch (Exception e) {}
  61.                         }
  62.                 }
  63.                 map.put(s,salary);
  64.             }
  65.             double max = map.firstEntry().getValue();
  66.             for (Map.Entry<String,Double> entry : map.entrySet()) {
  67.                 if (entry.getValue()>max){
  68.                     max=entry.getValue();
  69.                 }
  70.             }
  71.             for (Map.Entry<String,Double>entry: map.entrySet()) {
  72.                 if (entry.getValue()==max) {
  73.                     System.out.println(entry.getKey());
  74.                 }
  75.             }
  76.         }
  77.         catch (IOException e) {
  78.             System.out.println(e.getMessage());
  79.         }
  80.  
  81.         /*------------------------*/
  82.         finally
  83.         {
  84.             if (fileReader!=null) {
  85.                 try
  86.                 {
  87.                     fileReader.close();
  88.                 }
  89.                 catch (Exception e) {}
  90.             }
  91.         }
  92.     }
  93.     /*------------------------*/
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement