Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package beer;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.Comparator;
- import java.util.Iterator;
- import java.util.Scanner;
- public class Main {
- static private ArrayList<Beer> beers = new ArrayList<Beer>();
- protected static void add(String[] cmd) {
- Beer b = new Beer(cmd[1], cmd[2], Double.parseDouble(cmd[3]));
- beers.add(b);
- }
- final static Comparator<Beer> nameCmp = new NameComparator();
- final static Comparator<Beer> styleCmp = new StyleComparator();
- final static Comparator<Beer> strengthCmp = new StrengthComparator();
- protected static void list(String[] cmd) {
- if (cmd.length > 1) {
- if ("name".equals(cmd[1])) {
- Collections.sort(beers, nameCmp);
- } else if ("style".equals(cmd[1])) {
- Collections.sort(beers, styleCmp);
- } else if ("strength".equals(cmd[1])) {
- Collections.sort(beers, strengthCmp);
- }
- }
- for (int i = 0; i < beers.size(); i++) {
- System.out.println(beers.get(i));
- }
- }
- // szorgalmi list (7.4)
- protected static void list2(String[] cmd) {
- // Forditott sorrendben megyunk vegig a rendezesi parametereken,
- // mert "list style name" eredmenye olyan, hogy eloszor name, aztan style szerint rendezunk.
- // Felhasznaljuk, hogy a sort metodus un. konzervativ rendezo, vagyis ket elem csak akkor cserel helyet,
- // ha kulonbozik a sorrendjuk.
- for (int i = cmd.length-1; i > 0; i--) {
- if ("name".equals(cmd[i])) {
- Collections.sort(beers, nameCmp);
- } else if ("style".equals(cmd[i])) {
- Collections.sort(beers, styleCmp);
- } else if ("strength".equals(cmd[i])) {
- Collections.sort(beers, strengthCmp);
- }
- }
- for (int i = 0; i < beers.size(); i++) {
- System.out.println(beers.get(i));
- }
- }
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- while (true) {
- String line = sc.nextLine();
- String[] cmd = line.split(" ");
- if ("exit".equals(cmd[0])) {
- break;
- } else if ("add".equals(cmd[0])) {
- add(cmd);
- } else if ("list".equals(cmd[0])) {
- list(cmd);
- } else if ("list2".equals(cmd[0])) {
- list2(cmd);
- } else if ("search".equals(cmd[0])) {
- search(cmd);
- } else if ("find".equals(cmd[0])) {
- find(cmd);
- } else if ("delete".equals(cmd[0])) {
- delete(cmd);
- }
- }
- }
- private static void delete(String[] cmd) {
- Iterator<Beer> it = beers.iterator();
- while (it.hasNext()) {
- Beer b = it.next();
- if (b.getName().equals(cmd[1])) {
- it.remove();
- }
- }
- /**
- // Szorgalmi megoldas
- // rendezett lista kell (nev szerint, mert nevre keresunk)
- Collections.sort(beers, nameCmp);
- // ilyen nevu sort keresunk
- Beer ezt = new Beer(cmd[1], "", 0.0);
- // ezen az indexen van
- int itt = Collections.binarySearch(beers, ezt, nameCmp);
- if (itt > -1) beers.remove(itt);
- */
- }
- private static void find(String[] cmd) {
- for (Beer b : beers) {
- if ("name".equals(cmd[1])) {
- if (b.getName().equals(cmd[2])) {
- System.out.println(b);
- }
- } else if ("style".equals(cmd[1])) {
- if (b.getStyle().equals(cmd[2])) {
- System.out.println(b);
- }
- } else if ("strength".equals(cmd[1])) {
- // double osszehasonlitas!!!
- double d1 = b.getStrength();
- double d2 = Double.parseDouble(cmd[2]);
- if (Math.abs(d1-d2) < 1e-6) {
- System.out.println(b);
- }
- }
- }
- }
- private static void search(String[] cmd) {
- for (Beer b : beers) {
- if ("name".equals(cmd[1])) {
- if (b.getName().contains(cmd[2])) {
- System.out.println(b);
- }
- } else if ("style".equals(cmd[1])) {
- if (b.getStyle().contains(cmd[2])) {
- System.out.println(b);
- }
- } else if ("strength".equals(cmd[1])) {
- if (b.getStrength()>=Double.parseDouble(cmd[2])) {
- System.out.println(b);
- }
- } else if ("weaker".equals(cmd[1])) {
- if (b.getStrength()<=Double.parseDouble(cmd[2])) {
- System.out.println(b);
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement