Created
October 25, 2012 13:09
-
-
Save liyocee/3952452 to your computer and use it in GitHub Desktop.
Sharing money amongst friends.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.List; | |
import java.util.ArrayList; | |
import java.io.*; | |
import java.util.StringTokenizer; | |
public class Money{ | |
private List<String>allMembers; | |
private List<String>allData; | |
private List<Member>members; | |
private static String inFile="gift1.in"; | |
private static String outFile="gift1.out"; | |
public Money(){ | |
this.allMembers=new ArrayList<String>(); | |
this.members=new ArrayList<Member>(); | |
this.allData=new ArrayList<String>(); | |
} | |
public static void main(String[]args){ | |
Money money=new Money(); | |
money.setAllMembers(Money.inFile); | |
money.getAllMembers(); | |
} | |
public void getAllMembers(){ | |
for(int n=0;n<members.size();n++){ | |
int temp=this.members.get(n).getInitAmount(); | |
int count=this.members.get(n).getFriendsCount(); | |
int share=0; | |
List<String> tempF=null; | |
if(count!=0){ | |
share=temp/count; | |
this.members.get(n).setAmountShared(share*count); | |
for(int j=0;j<count;j++){ | |
tempF=this.members.get(n).getFriends(); | |
} | |
for(int a=0;a<tempF.size();a++){ | |
for(int k=0;k<members.size();k++){ | |
if(tempF.get(a).equals(members.get(k).getMemberName())) { | |
this.members.get(k).setAmountIn(share+this.members.get(k).getAmountIn()); | |
break; | |
}else continue; | |
} | |
} | |
} | |
} | |
StringBuilder sb=new StringBuilder(); | |
for(int y=0;y<allMembers.size();y++){ | |
Integer temp1,temp2,res; | |
temp1=temp2=res=0; | |
for(int k=members.size()-1;k>=0;k--){ | |
if(members.get(k).getMemberName().equals(allMembers.get(y))) { | |
temp1=this.members.get(k).getAmountIn(); | |
temp2=this.members.get(k).getAmountShared(); | |
res=temp1-temp2; | |
break; | |
} | |
} | |
sb.append(allMembers.get(y)).append(" ").append(res.toString()).append("\n"); | |
} | |
Money.save(new File(outFile),sb.toString()); | |
} | |
public static void save(File file, String textToSave) { | |
file.delete(); | |
try { | |
BufferedWriter out = new BufferedWriter(new FileWriter(file)); | |
out.write(textToSave); | |
out.close(); | |
} catch (IOException e) { | |
} | |
} | |
public void setAllMembers(String file){ | |
this.readFile(file); | |
int n=Integer.parseInt(this.allData.get(0)); | |
int k=1; | |
for(;k<=5;k++){ | |
this.allMembers.add(allData.get(k)); | |
} | |
String delims="[ ]+"; | |
for(;k<allData.size();k++){ | |
Member member=new Member(); | |
member.setMemberName(allData.get(k)); | |
k=k+1; | |
String[] tokens = allData.get(k).split(delims); | |
member.setInitAmount(Integer.parseInt(tokens[0])); | |
int tempCount=Integer.parseInt(tokens[1]); | |
member.setFriendsCount(tempCount); | |
int j=0; | |
while(j<tempCount){ | |
k=k+1;; | |
member.setFriends(allData.get(k)); | |
j++; | |
} | |
members.add(member); | |
} | |
} | |
public void readFile(String file) { | |
BufferedReader br; | |
try{ | |
br=new BufferedReader(new FileReader(file)); | |
String line=br.readLine(); | |
while(line!=null){ | |
allData.add(line); | |
line=br.readLine(); | |
} | |
}catch(Exception e){ | |
e.printStackTrace(); | |
} | |
}//end | |
} | |
class Member{ | |
String memberName; | |
int initAmount; | |
List<String> friends; | |
int amountIn; | |
int friendsCount; | |
int amountShared; | |
Member(){ | |
friends=new ArrayList<String>(); | |
this.amountIn=0; | |
amountShared=0; | |
} | |
public void setMemberName(String name){ | |
this.memberName=name; | |
} | |
public String getMemberName(){ | |
return this.memberName; | |
} | |
public void setFriendsCount(int count){ | |
this.friendsCount=count; | |
} | |
public Integer getFriendsCount(){ | |
return this.friendsCount; | |
} | |
public void setFriends(String friends){ | |
this.friends.add(friends); | |
} | |
public List<String>getFriends(){ | |
return this.friends; | |
} | |
public void setInitAmount(int amount){ | |
this.initAmount=amount; | |
} | |
public int getInitAmount(){ | |
return this.initAmount; | |
} | |
public void setAmountIn(int amount){ | |
this.amountIn=amount; | |
} | |
public int getAmountIn(){ | |
return this.amountIn; | |
} | |
public void setAmountShared(int amount){ | |
this.amountShared=amount; | |
} | |
public int getAmountShared(){ | |
return this.amountShared; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment