Advertisement
jaVer404

level19.lesson10.home02(new version)_not tested

Feb 24th, 2016
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.30 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.util.*;
  26.  
  27. public class Solution {
  28.     public static void main(String[] args) {
  29.         BufferedReader fileReader = null;
  30.         try {
  31.             fileReader = new BufferedReader(new FileReader(args[0]));
  32.             String line = "";
  33.             ArrayList<String[]> myLines = new ArrayList<String[]>();
  34.             HashSet<String> names = new HashSet<String>();
  35.             while ((line=fileReader.readLine())!=null) {
  36.                 try {
  37.                     String[]temp = line.split(" ");
  38.                     if (isNumeric(temp[1])) {
  39.                         myLines.add(temp);
  40.                         names.add(temp[0]);
  41.                     }
  42.                 }
  43.                 catch (Exception e){}
  44.             }
  45.             try
  46.             {
  47.                 fileReader.close();
  48.             }
  49.             catch (Exception e) {
  50.             }
  51.             HashMap<String, Double> nameValue = new HashMap<String, Double>();
  52.             for (String name : names) {//берем имя из Set names
  53.                 double salary = 0;
  54.                 for (String[]namVal : myLines) {
  55.                     if (name.equals(namVal[0])) {
  56.                         salary=salary+Double.parseDouble(namVal[1]);
  57.                     }
  58.                 }
  59.                 nameValue.put(name,salary);
  60.             }
  61.             double max = findMax(nameValue);
  62.             for (Map.Entry<String,Double>entry:nameValue.entrySet()) {
  63.                 if ((Double.compare(max,entry.getValue()))==0) {
  64.                     System.out.println(entry.getKey());
  65.                 }
  66.             }
  67.             fileReader.close();
  68.         }
  69. /*-------------------------------------------------------------*/
  70.         catch (Exception e) {}
  71.         finally
  72.         {
  73.             if(fileReader!=null) {
  74.                 try
  75.                 {
  76.                     fileReader.close();
  77.                 }
  78.                 catch (Exception e) {}
  79.             }
  80.         }
  81.     }
  82.  
  83.     public static boolean isNumeric(String str)
  84.     {
  85.         try
  86.         {
  87.             double d = Double.parseDouble(str);
  88.         }
  89.         catch(Exception nfe)
  90.         {
  91.             return false;
  92.         }
  93.         return true;
  94.     }
  95.  
  96.     public static double findMax(HashMap<String,Double>someMap){
  97.         return Collections.max(someMap.values());
  98.     }
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement