Hey!
Please take a look on my code. Should I use HashMap to get correct requirements or problem lies another place?
🤔🤯
package pl.codegym.task.task19.task1919;
/*
Obliczanie wynagrodzeń
*/
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
public class Solution {
public static void main(String[] args) throws Exception {
File file = new File(args[0]);//"C:\\Users\\Daniel\\Desktop\\a.txt.txt"
FileReader fr = new FileReader(file);
BufferedReader reader = new BufferedReader(fr);
ArrayList<String> mainList = new ArrayList<String>();
ArrayList<String> newList = new ArrayList<String>();
while(reader.ready()){
String txt = reader.readLine();
mainList.add(txt);
}
int position=1;
Iterator it = mainList.iterator();
while(it.hasNext()){
String tekst = (String)it.next();
String name = getName(tekst);
if(nameVsList(name, newList)){
continue;
}
Double money = getMoney(tekst);
String addedName = checkAndAdd(name, money, mainList, position);
position++;
if(addedName!= null){
newList.add(addedName);
}
else {
newList.add(tekst);
}
}
Collections.sort(newList);
for(String s : newList){
System.out.println(s);
}
fr.close();
reader.close();
}
static String getName (String name) {
int i = name.indexOf(" ");
String name2 = name.substring(0,i);
return name2;
}
static double getMoney (String money) {
int i = money.indexOf(" ");
Double money2 = Double.parseDouble(money.substring(i));
return money2;
}
static boolean nameVsList (String name, ArrayList<String> list){
boolean is= false;
for(String s : list){
if(getName(s).equals(name)) {
is = true;
break;
}
}
return is;
}
static String checkAndAdd(String name, double money, ArrayList<String>list, int pos){ // adds all the money for specified name, return null if not ocours
String name3=null;
double money3=0;
for(int i = pos; i<list.size(); i ++){
String name1 = getName(list.get(i));
if(name.equals(name1)){
double money1 = getMoney(list.get(i));
money+= money1;
money3+=money;
name3 = name+ " " +money;
}
}
return name3;
}
}