Всем добрый день!
Мой код корректно работает с именами на латинице (так, как написано в задании), но некорректно работает с именами на кириллице. Выводит на вывод несколько одинаковых имен, не складывая числа. Как показал дебаг, не работает сравнение equals (String, String). В чем может быть дело? Код:
FileReader fileReader = new FileReader(args[0]);
BufferedReader reader = new BufferedReader(fileReader);
Map<String, Double> salaries = new HashMap<String, Double>();
String name = "";
String value = "";
boolean flag = false;
String x;
while ( !(x = reader.readLine()).equals("")){
String [] spl = x.split(" ");
String k = spl[0];
double c = Double.parseDouble(spl[1]);
for (Map.Entry<String, Double> pair : salaries.entrySet())
{
String key = pair.getKey();
if( k.equals(key)){
flag = true;
double val = pair.getValue();
salaries.put(key, val + c );
}
}
if (!flag){ salaries.put(spl[0],c); }
flag = false;
}
reader.close();
Map<String, Double> sortedMap = new TreeMap<String, Double>();
sortedMap.putAll(salaries);
for (Map.Entry<String, Double> pair : sortedMap.entrySet()) {
String key = pair.getKey();
double val = pair.getValue();
System.out.println(key + " " + val);
}
}
}
package com.javarush.task.task19.task1919;
/*
Считаем зарплаты
*/
import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
public class Solution {
public static void main(String[] args) throws FileNotFoundException, IOException{
// FileInputStream reader = new FileInputStream(args[0]);
FileReader fileReader = new FileReader(args[0]);
BufferedReader reader = new BufferedReader(fileReader);
/* FileInputStream fstream = new FileInputStream(args[0]);
BufferedReader reader = new BufferedReader(new InputStreamReader(fstream));
*/
Map<String, Double> salaries = new HashMap<String, Double>();
String name = "";
String value = "";
boolean flag = false;
String x;
while ( !(x = reader.readLine()).equals("")){
// String x = reader.readLine();
String [] spl = x.split(" ");
double c = Double.parseDouble(spl[1]);
for (Map.Entry<String, Double> pair : salaries.entrySet())
{
String key = pair.getKey();
if( spl[0].equals(key)){
flag = true;
double val = pair.getValue();
salaries.put(key, val + c );
}
}
if (!flag){
salaries.put(spl[0],c);
}
flag = false;
}
reader.close();
fileReader.close();
Map<String, Double> sortedMap = new TreeMap<String, Double>();
sortedMap.putAll(salaries);
for (Map.Entry<String, Double> pair : sortedMap.entrySet()) {
String key = pair.getKey();
double val = pair.getValue();
System.out.println(key + " " + val);
}
}
}