Advertisement
jaVer404

level19.lesson10.home02(tester)

Feb 24th, 2016
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.59 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.             TreeSet<String> names = new TreeSet<String>();
  38.  
  39.             while ((textLine=fileReader.readLine())!=null) {
  40.                 try
  41.                 {
  42.                     parsedLine=textLine.split(" ");
  43.                     goodLines.add(parsedLine);
  44.                     names.add(parsedLine[0]);//добавили имя
  45.                 }
  46.                 catch (Exception e) {}
  47.             }
  48.             fileReader.close();
  49.             TreeMap<String, Double> map = new TreeMap<String, Double>();
  50.             for (String s : names) {//Гоним по уникальным именам
  51.                 double salary=0;
  52.                 for (String[]items : goodLines) {
  53.                     if (s.equals(items[0])){
  54.                         try
  55.                         {
  56.                             salary=salary+Double.parseDouble(items[1]);
  57.                         }
  58.                         catch (Exception e) {}
  59.                     }
  60.                 }
  61.                 map.put(s,salary);
  62.             }
  63.  
  64.             if (((map.size()))>=1){
  65.                 System.out.println("Enters if");
  66.  
  67.             double max = map.firstEntry().getValue();//должна быть одна запись
  68.                 System.out.println("firstEntry= " + (map.firstEntry().getKey())+map.firstEntry().getValue());
  69.                 System.out.println("map.firstEntry.getValue()= " + max);
  70.                 System.out.println("initialize max " + max);
  71.  
  72.             for (Map.Entry<String,Double> entry : map.entrySet()) {
  73.                 if (Double.compare(max,(entry.getValue()))<1){
  74.                     max=entry.getValue();
  75.                     System.out.println("Max is " + max);
  76.                 }
  77.             }
  78.             for (Map.Entry<String,Double>entry: map.entrySet()) {
  79.                 if ((Double.compare(entry.getValue(),max))==0) {
  80.                     System.out.println(entry.getKey());
  81.                 }
  82.             }
  83.             }
  84.         }
  85.         catch (IOException e) {
  86.         }
  87.         finally
  88.         {
  89.             if (fileReader!=null) {
  90.                 try
  91.                 {
  92.                     fileReader.close();
  93.                 }
  94.                 catch (Exception e) {}
  95.             }
  96.         }
  97.     }
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement