Advertisement
finySTAR

Main

Apr 2nd, 2019
398
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 3.92 KB | None | 0 0
  1. package beer;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Collections;
  5. import java.util.Comparator;
  6. import java.util.Iterator;
  7. import java.util.Scanner;
  8.  
  9. public class Main {
  10.  
  11.     static private ArrayList<Beer> beers = new ArrayList<Beer>();
  12.  
  13.     protected static void add(String[] cmd) {
  14.         Beer b = new Beer(cmd[1], cmd[2], Double.parseDouble(cmd[3]));
  15.         beers.add(b);
  16.     }
  17.     final static Comparator<Beer> nameCmp = new NameComparator();
  18.     final static Comparator<Beer> styleCmp = new StyleComparator();
  19.     final static Comparator<Beer> strengthCmp = new StrengthComparator();
  20.     protected static void list(String[] cmd) {
  21.         if (cmd.length > 1) {
  22.             if ("name".equals(cmd[1])) {
  23.                 Collections.sort(beers, nameCmp);
  24.             } else if ("style".equals(cmd[1])) {
  25.                 Collections.sort(beers, styleCmp);
  26.             } else if ("strength".equals(cmd[1])) {
  27.                 Collections.sort(beers, strengthCmp);
  28.             }
  29.         }
  30.         for (int i = 0; i < beers.size(); i++) {
  31.             System.out.println(beers.get(i));
  32.         }
  33.     }
  34.     // szorgalmi list (7.4)
  35.     protected static void list2(String[] cmd) {
  36.         // Forditott sorrendben megyunk vegig a rendezesi parametereken,
  37.         // mert "list style name" eredmenye olyan, hogy eloszor name, aztan style szerint rendezunk.
  38.         // Felhasznaljuk, hogy a sort metodus un. konzervativ rendezo, vagyis ket elem csak akkor cserel helyet,
  39.         // ha kulonbozik a sorrendjuk.
  40.         for (int i = cmd.length-1; i > 0; i--) {
  41.             if ("name".equals(cmd[i])) {
  42.                 Collections.sort(beers, nameCmp);
  43.             } else if ("style".equals(cmd[i])) {
  44.                 Collections.sort(beers, styleCmp);
  45.             } else if ("strength".equals(cmd[i])) {
  46.                 Collections.sort(beers, strengthCmp);
  47.             }
  48.         }
  49.         for (int i = 0; i < beers.size(); i++) {
  50.             System.out.println(beers.get(i));
  51.         }
  52.     }
  53.  
  54.     public static void main(String[] args) {
  55.  
  56.         Scanner sc = new Scanner(System.in);
  57.  
  58.         while (true) {
  59.             String line = sc.nextLine();
  60.             String[] cmd = line.split(" ");
  61.             if ("exit".equals(cmd[0])) {
  62.                 break;
  63.             } else if ("add".equals(cmd[0])) {
  64.                 add(cmd);
  65.             } else if ("list".equals(cmd[0])) {
  66.                 list(cmd);
  67.             } else if ("list2".equals(cmd[0])) {
  68.                 list2(cmd);
  69.             } else if ("search".equals(cmd[0])) {
  70.                 search(cmd);
  71.             } else if ("find".equals(cmd[0])) {
  72.                 find(cmd);
  73.             } else if ("delete".equals(cmd[0])) {
  74.                 delete(cmd);
  75.             }
  76.         }
  77.  
  78.     }
  79.     private static void delete(String[] cmd) {
  80.         Iterator<Beer> it = beers.iterator();
  81.         while (it.hasNext()) {
  82.             Beer b = it.next();
  83.             if (b.getName().equals(cmd[1])) {
  84.                 it.remove();
  85.             }
  86.         }
  87.         /**
  88.         // Szorgalmi megoldas
  89.         // rendezett lista kell (nev szerint, mert nevre keresunk)
  90.         Collections.sort(beers, nameCmp);
  91.         // ilyen nevu sort keresunk
  92.         Beer ezt = new Beer(cmd[1], "", 0.0);
  93.         // ezen az indexen van
  94.         int itt = Collections.binarySearch(beers, ezt, nameCmp);
  95.         if (itt > -1) beers.remove(itt);
  96.         */
  97.     }
  98.    
  99.    
  100.     private static void find(String[] cmd) {
  101.         for (Beer b : beers) {
  102.             if ("name".equals(cmd[1])) {
  103.                 if (b.getName().equals(cmd[2])) {
  104.                     System.out.println(b);
  105.                 }
  106.             } else if ("style".equals(cmd[1])) {
  107.                 if (b.getStyle().equals(cmd[2])) {
  108.                     System.out.println(b);
  109.                 }
  110.             } else if ("strength".equals(cmd[1])) {
  111.                 // double osszehasonlitas!!!
  112.                 double d1 = b.getStrength();
  113.                 double d2 = Double.parseDouble(cmd[2]);
  114.                 if (Math.abs(d1-d2) < 1e-6) {
  115.                     System.out.println(b);
  116.                 }
  117.             }
  118.         }
  119.     }
  120.     private static void search(String[] cmd) {
  121.         for (Beer b : beers) {
  122.             if ("name".equals(cmd[1])) {
  123.                 if (b.getName().contains(cmd[2])) {
  124.                     System.out.println(b);
  125.                 }
  126.             } else if ("style".equals(cmd[1])) {
  127.                 if (b.getStyle().contains(cmd[2])) {
  128.                     System.out.println(b);
  129.                 }
  130.             } else if ("strength".equals(cmd[1])) {
  131.                 if (b.getStrength()>=Double.parseDouble(cmd[2])) {
  132.                     System.out.println(b);
  133.                 }
  134.             } else if ("weaker".equals(cmd[1])) {
  135.                 if (b.getStrength()<=Double.parseDouble(cmd[2])) {
  136.                     System.out.println(b);
  137.                 }
  138.             }
  139.         }
  140.  
  141.     }
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement