Advertisement
Guest User

Kristina Mojanovska

a guest
Jul 30th, 2016
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.57 KB | None | 0 0
  1. import java.io.InputStream;
  2. import java.io.OutputStream;
  3. import java.io.PrintWriter;
  4. import java.util.*;
  5.  
  6. public class CashRegisterTest {
  7.   public static void main(String[] args) {
  8.     CashRegister cashRegister = new CashRegister();
  9.     cashRegister.readBills(System.in);
  10.     System.out.println("========== Latest 5 bills ==========");
  11.     cashRegister.print(System.out, 0, 5);
  12.     System.out.println("========== Top 5 by price ==========");
  13.     cashRegister.print(System.out, 1, 5);
  14.   }
  15. }
  16.  
  17.  
  18. class Cash implements Comparable<Cash>{
  19.     protected String date;
  20.     protected List<String> lista;
  21.  
  22.     public Cash(String date, List<String> lista) {
  23.         this.date = date;
  24.         this.lista=new ArrayList<String>();
  25.         this.lista=lista;
  26.        
  27.     }
  28.     public Cash() {
  29.         lista=new ArrayList<String>();
  30.         // TODO Auto-generated constructor stub
  31.     }
  32.     public double suma(){
  33.         double sum=0;
  34.         for (String string : lista) {
  35.             String[] parts=string.split(" ");
  36.             sum+=Double.parseDouble(parts[5]);
  37.         }
  38.         return sum;
  39.     }
  40.     public int brojProdukti(){
  41.         return lista.size();
  42.     }
  43.     @Override
  44.     public String toString() {
  45.         //return "Cash [date=" + date + ", lista=" + lista + "]";
  46.         return "date= " +date +"suma=" +suma();
  47.     }
  48.     public int getGodina(){
  49.         String[] prvo=date.split("T");
  50.         String[] vtoro=prvo[0].split("-");
  51.         return Integer.parseInt(vtoro[0]);
  52.     }
  53.     public int getMesec(){
  54.         String[] prvo=date.split("T");
  55.         String[] vtoro=prvo[0].split("-");
  56.         return Integer.parseInt(vtoro[1]);
  57.     }
  58.     public int getDen(){
  59.         String[] prvo=date.split("T");
  60.         String[] vtoro=prvo[0].split("-");
  61.         return Integer.parseInt(vtoro[2]);
  62.        
  63.     }
  64.     public int getCas(){
  65.         String[] prvo=date.split("T");
  66.         String[] vtoro=prvo[1].split(":");
  67.         return Integer.parseInt(vtoro[0]);
  68.     }
  69.     public int getMinuti(){
  70.         String[] prvo=date.split("T");
  71.         String[] vtoro=prvo[1].split(":");
  72.         return Integer.parseInt(vtoro[1]);
  73.     }
  74.     public int getSekundi(){
  75.         String[] prvo=date.split("T");
  76.         String[] vtoro=prvo[1].split(":");
  77.         return Integer.parseInt(vtoro[2]);
  78.     }
  79.     @Override
  80.     public int compareTo(Cash o) {
  81.         if(Integer.compare(getGodina(), o.getGodina())==0){
  82.             if(Integer.compare(getMesec(), o.getMesec())==0){
  83.                 if(Integer.compare(getDen(), o.getDen())==0){
  84.                     if(Integer.compare(getCas(), o.getCas())==0){
  85.                         if(Integer.compare(getMinuti(),o.getMinuti())==0){
  86.                             if(Integer.compare(getSekundi(), o.getSekundi())==0){
  87.                                 return Integer.compare(brojProdukti(), o.brojProdukti());
  88.                             }else{
  89.                                 return Integer.compare(getSekundi(), o.getSekundi());
  90.                             }
  91.                         }else{
  92.                             return Integer.compare(getMinuti(),o.getMinuti());
  93.                         }
  94.                     }else{
  95.                         return Integer.compare(getCas(), o.getCas());
  96.                     }
  97.                 }else{
  98.                     return Integer.compare(getDen(), o.getDen());
  99.                 }
  100.             }else{
  101.                 return Integer.compare(getMesec(), o.getMesec());
  102.             }
  103.         }else{
  104.             return Integer.compare(getGodina(), o.getGodina());
  105.         }
  106.     }
  107.    
  108.    
  109. }
  110.  
  111. class CashRegister{
  112.     protected List<Cash> keshoj;
  113.     public CashRegister(){
  114.         keshoj=new ArrayList<Cash>();
  115.     }
  116.     public void readBills(InputStream inputStream){
  117.         Scanner scanner=new Scanner(inputStream);
  118.         int flag=0;
  119.         int flag1=0;
  120.         String vreme="2015-05-05T22:46:00";
  121.         while(scanner.hasNextLine()){
  122.             String string = scanner.nextLine();
  123.             String[] parts=string.split(" ");
  124.        
  125.             List<String> tmp=new ArrayList<String>();
  126.            
  127.             while(parts.length!=1){
  128.             tmp.add(string);
  129.             string=scanner.nextLine();
  130.             parts=string.split(" ");
  131.             flag=1;
  132.             }  
  133.             if(flag==1){
  134.                 Cash cash=new Cash(vreme, tmp);
  135.                 keshoj.add(cash);
  136.                 flag=0;
  137.             }
  138.             if(parts.length==1){
  139.                 vreme=string;
  140.             }
  141.         }
  142.        
  143.     }
  144.    
  145.     public void print(OutputStream outputStream, int order, int top){
  146.         List<Cash> tmp=new ArrayList<Cash>();
  147.         PrintWriter pw=new PrintWriter(outputStream);
  148.         StringBuilder sb=new StringBuilder();
  149.         if(order==0){
  150.             Collections.sort(keshoj);
  151.             Collections.reverse(keshoj);
  152.             for(int i=0;i<top;i++){
  153.                 tmp.add(keshoj.get(i));
  154.             }
  155.         }
  156.         if(order==1){
  157.             Collections.sort(keshoj, new Filterr());
  158.             Collections.reverse(keshoj);
  159.             for(int i=0;i<top;i++){
  160.                 tmp.add(keshoj.get(i));
  161.             }
  162.         }
  163.         for (Cash cash : tmp) {
  164.            
  165.             sb.append(cash.toString());
  166.             sb.append("\n");
  167.            
  168.         }
  169.         pw.println(sb.toString());
  170.         pw.flush();
  171.         pw.close();
  172.        
  173.     }
  174. }
  175.  
  176.  
  177. class Filterr implements Comparator<Cash>{
  178.  
  179.     @Override
  180.     public int compare(Cash arg0, Cash arg1) {
  181.         if(Double.compare(arg0.suma(), arg1.suma())==0){
  182.             return Integer.compare(arg0.brojProdukti(), arg1.brojProdukti());
  183.         }
  184.         return Double.compare(arg0.suma(), arg1.suma());
  185.     }
  186.    
  187. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement