Ivan_Bochev

Hall

Jun 17th, 2021 (edited)
764
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package mc;
  2.  
  3. import java.util.*;
  4.  
  5. public class Hall {
  6.     private String adress;
  7.     private static ArrayList<Concert> Aconcerts;
  8.     private static Scanner sc = new Scanner(System.in);
  9.     private static Hall h = new Hall();
  10.  
  11.     public Hall() {
  12.     }
  13.  
  14.     public Hall(String adress, ArrayList<Concert> aconcerts) {
  15.         this.adress = adress;
  16.         Aconcerts = aconcerts;
  17.     }
  18.  
  19.     public String getAdress() {
  20.         return adress;
  21.     }
  22.  
  23.     public void setAdress(String adress) {
  24.         this.adress = adress;
  25.     }
  26.  
  27.     public ArrayList<Concert> getAconcerts() {
  28.         return Aconcerts;
  29.     }
  30.  
  31.     public void setAconcerts(ArrayList<Concert> aconcerts) {
  32.         Aconcerts = aconcerts;
  33.     }
  34.  
  35.     public void sellTickets(double budget) {
  36.         try {
  37.             ArrayList<Concert> concerts = new ArrayList<>();
  38.             System.out.println("\nWe offer tickets for 2 types of concerts:\n1. Rock concerts\n2. Metal concerts");
  39.             System.out.print("\nWhich concert type do you choose: ");
  40.             int choose = Integer.parseInt(sc.nextLine());
  41.             switch (choose) {
  42.             case 1:
  43.                 System.out.println("\nThere are 2 characteristics for grouping the concerts:\n1. Genre\n2. Price");
  44.                 System.out.print("\nWhat's the characteristic that you want to group the concerts by: ");
  45.                 int characteristic = Integer.parseInt(sc.nextLine());
  46.                 switch (characteristic) {
  47.                 case 1:
  48.                     chooseByGenre(budget, choose, concerts);
  49.                     break;
  50.                 case 2:
  51.                     chooseByPrice(budget, choose, concerts);
  52.                     break;
  53.                 default:
  54.                     System.out.println("\nInvalid characteristic!\nPlease try again!");
  55.                     sellTickets(budget);
  56.                 }
  57.                 break;
  58.             case 2:
  59.                 System.out.println("\nThere are 2 characteristics for grouping the concerts:\n1. Genre\n2. Price");
  60.                 System.out.print("\nWhat's the characteristic that you want to group the concerts by: ");
  61.                 int aspect = Integer.parseInt(sc.nextLine());
  62.                 switch (aspect) {
  63.                 case 1:
  64.                     chooseByGenre(budget, choose, concerts);
  65.                     break;
  66.                 case 2:
  67.                     chooseByPrice(budget, choose, concerts);
  68.                     break;
  69.                 default:
  70.                     System.out.println("\nInvalid characteristic!\nPlease try again!");
  71.                     sellTickets(budget);
  72.                 }
  73.                 break;
  74.             default:
  75.                 System.out.println("\nInvalid choice!\nPlease try again!");
  76.                 sellTickets(budget);
  77.             }
  78.         } catch (NumberFormatException nfe) {
  79.             System.out.println("Invalid input!");
  80.             sellTickets(budget);
  81.         }
  82.     }
  83.  
  84.     private static void chooseByGenre(double budget, int choose, ArrayList<Concert> concerts) {
  85.         System.out.print("Enter the genre that you want: ");
  86.         String genre = sc.nextLine();
  87.         switch (choose) {
  88.         case 1:
  89.             for (Concert c : Aconcerts) {
  90.                 if (genre.equals("hard rock") || genre.equals("alternative rock") || genre.equals("grunge")
  91.                         || genre.equals("punk rock") || genre.equals("pop punk")) {
  92.                     if (c.getGenre().equals(genre) || c.getGenre().contains(genre)) {
  93.                         concerts.add(c);
  94.                     }
  95.                 } else {
  96.                     System.out.println("\nSorry,but we don't have any concert in that genre category!");
  97.                     break;
  98.                 }
  99.             }
  100.             break;
  101.         case 2:
  102.             for (Concert c : Aconcerts) {
  103.                 if (genre.equals("thrash metal") || genre.equals("heavy metal") || genre.equals("groove metal")
  104.                         || genre.equals("glam metal") || genre.equals("black metal")
  105.                         || genre.equals("melodic death metal") || genre.equals("death metal")
  106.                         || genre.equals("nu metal") || genre.equals("alternative metal")
  107.                         || genre.equals("progressive metal")) {
  108.                     if (c.getGenre().equals(genre) || c.getGenre().contains(genre)) {
  109.                         concerts.add(c);
  110.                     }
  111.                 } else {
  112.                     System.out.println("\nSorry,but we don't have any concert in that genre category!");
  113.                     break;
  114.                 }
  115.             }
  116.             break;
  117.         }
  118.         choosingTickets(budget, concerts);
  119.     }
  120.  
  121.     private static void chooseByPrice(double budget, int choose, ArrayList<Concert> concerts) {
  122.         try {
  123.             System.out.print("Enter the price that you want: ");
  124.             double price = Double.parseDouble(sc.nextLine());
  125.             for (Concert c : Aconcerts) {
  126.                 if (choose == 1) {
  127.                     if (price >= 30 && price <= 100) {
  128.                         if (((c instanceof RockConcerts) || (c.getGenre().contains("punk rock")
  129.                                 || c.getGenre().contains("pop punk") || c.getGenre().contains("alternative rock")
  130.                                 || c.getGenre().contains("hard rock")
  131.                                 || c.getGenre().contains("grunge") && (c instanceof MetalConcerts)))
  132.                                 && (c.getTicketPrice() >= 30 && c.getTicketPrice() <= 100)) {
  133.                             concerts.add(c);
  134.                         }
  135.                     } else if (price > 100 && price <= 200) {
  136.                         if (((c instanceof RockConcerts) || (c.getGenre().contains("punk rock")
  137.                                 || c.getGenre().contains("pop punk") || c.getGenre().contains("alternative rock")
  138.                                 || c.getGenre().contains("hard rock")
  139.                                 || c.getGenre().contains("grunge") && (c instanceof MetalConcerts)))
  140.                                 && (c.getTicketPrice() > 100 && c.getTicketPrice() <= 200)) {
  141.                             concerts.add(c);
  142.                         }
  143.                     } else if (price > 200 && price <= 300) {
  144.                         if (((c instanceof RockConcerts) || (c.getGenre().contains("punk rock")
  145.                                 || c.getGenre().contains("pop punk") || c.getGenre().contains("alternative rock")
  146.                                 || c.getGenre().contains("hard rock")
  147.                                 || c.getGenre().contains("grunge") && (c instanceof MetalConcerts)))
  148.                                 && (c.getTicketPrice() > 200 && c.getTicketPrice() <= 300)) {
  149.                             concerts.add(c);
  150.                         }
  151.                     } else {
  152.                         System.out.println("\nSorry,but we don't have any concert in that price category!");
  153.                         break;
  154.                     }
  155.                 } else if (choose == 2) {
  156.                     if (price >= 30 && price <= 100) {
  157.                         if (((c instanceof MetalConcerts) || (c.getGenre().contains("thrash metal")
  158.                                 || c.getGenre().contains("heavy metal") || c.getGenre().contains("groove metal")
  159.                                 || c.getGenre().contains("glam metal") || c.getGenre().contains("black metal")
  160.                                 || c.getGenre().contains("melodic death metal") || c.getGenre().contains("death metal")
  161.                                 || c.getGenre().contains("nu metal") || c.getGenre().contains("alternative metal")
  162.                                 || c.getGenre().contains("progressive metal") && (c instanceof RockConcerts)))
  163.                                 && (c.getTicketPrice() >= 30 && c.getTicketPrice() <= 100)) {
  164.                             concerts.add(c);
  165.                         }
  166.                     } else if (price > 100 && price <= 200) {
  167.                         if (((c instanceof MetalConcerts) || (c.getGenre().contains("thrash metal")
  168.                                 || c.getGenre().contains("heavy metal") || c.getGenre().contains("groove metal")
  169.                                 || c.getGenre().contains("glam metal") || c.getGenre().contains("black metal")
  170.                                 || c.getGenre().contains("melodic death metal") || c.getGenre().contains("death metal")
  171.                                 || c.getGenre().contains("nu metal") || c.getGenre().contains("alternative metal")
  172.                                 || c.getGenre().contains("progressive metal") && (c instanceof RockConcerts)))
  173.                                 && (c.getTicketPrice() > 100 && c.getTicketPrice() <= 200)) {
  174.                             concerts.add(c);
  175.                         }
  176.                     } else if (price > 200 && price <= 300) {
  177.                         if (((c instanceof MetalConcerts) || (c.getGenre().contains("thrash metal")
  178.                                 || c.getGenre().contains("heavy metal") || c.getGenre().contains("groove metal")
  179.                                 || c.getGenre().contains("glam metal") || c.getGenre().contains("black metal")
  180.                                 || c.getGenre().contains("melodic death metal") || c.getGenre().contains("death metal")
  181.                                 || c.getGenre().contains("nu metal") || c.getGenre().contains("alternative metal")
  182.                                 || c.getGenre().contains("progressive metal") && (c instanceof RockConcerts)))
  183.                                 && (c.getTicketPrice() > 200 && c.getTicketPrice() <= 300)) {
  184.                             concerts.add(c);
  185.                         }
  186.                     } else {
  187.                         System.out.println("\nSorry,but we don't have any concert in that price category!");
  188.                         break;
  189.                     }
  190.                 }
  191.             }
  192.         } catch (NumberFormatException nfe) {
  193.             System.out.println("Invalid input!\n");
  194.             chooseByPrice(budget, choose, concerts);
  195.         }
  196.         choosingTickets(budget, concerts);
  197.     }
  198.  
  199.     private static void sortAndPrint(ArrayList<Concert> concerts) {
  200.         Collections.sort(concerts, Concert.comparator);
  201.         for (Concert c : concerts) {
  202.             c.performerInfo();
  203.         }
  204.     }
  205.  
  206.     private static void choosingTickets(double budget, ArrayList<Concert> concerts) {
  207.         sortAndPrint(concerts);
  208.         while (concerts.size() != 0) {
  209.             try {
  210.                 System.out.print("\nWould you like to buy tickets: ");
  211.                 String decision = sc.nextLine();
  212.                 if (decision.equals("yes")) {
  213.                     if (concerts.size() == 1) {
  214.                         System.out.print("How many tickets would you buy: ");
  215.                         int count = Integer.parseInt(sc.nextLine());
  216.                         if (count <= 0) {
  217.                             System.out.println("\nInvalid ticket count!\nPlease try again!");
  218.                         } else {
  219.                             if (budget < count * concerts.get(0).getTicketPrice()) {
  220.                                 if (count == 1) {
  221.                                     System.out.printf(
  222.                                             "\nSorry, but you have only %.2f $, which is not enough to buy tickets for the %s's concert!\n",
  223.                                             budget, concerts.get(0).getBand());
  224.                                     break;
  225.                                 } else {
  226.                                     int availableCount = (int) (budget / concerts.get(0).getTicketPrice());
  227.                                     if (count == 2) {
  228.                                         System.out.printf("\nYou can buy only 1 ticket for the %s's concert!\n",
  229.                                                 concerts.get(0).getBand());
  230.                                         System.out.print("Would you like to buy it: ");
  231.                                         String choice = sc.nextLine();
  232.                                         if (choice.equals("yes")) {
  233.                                             System.out.printf("\nYou bought a ticket for the %s's concert!\n",
  234.                                                     concerts.get(0).getBand());
  235.                                             concerts.get(0)
  236.                                                     .setTicketCount(concerts.get(0).getTicketCount() - availableCount);
  237.                                             budget -= availableCount * concerts.get(0).getTicketPrice();
  238.                                             break;
  239.                                         } else if (choice.equals("no")) {
  240.                                             System.out.println("\nWe are sorry to hear that!");
  241.                                             break;
  242.                                         } else {
  243.                                             System.out.println("\nSomething went wrong!\nPlease try again!");
  244.                                         }
  245.                                     } else {
  246.                                         System.out.printf("\nYou can buy only %d tickets for the %s's concert!\n",
  247.                                                 availableCount, concerts.get(0).getBand());
  248.                                         System.out.print("Would you like to buy them: ");
  249.                                         String choice = sc.nextLine();
  250.                                         if (choice.equals("yes")) {
  251.                                             System.out.printf("\nYou bought %d tickets for the %s's concert!\n",
  252.                                                     availableCount, concerts.get(0).getBand());
  253.                                             concerts.get(0)
  254.                                                     .setTicketCount(concerts.get(0).getTicketCount() - availableCount);
  255.                                             budget -= availableCount * concerts.get(0).getTicketPrice();
  256.                                             break;
  257.                                         } else if (choice.equals("no")) {
  258.                                             System.out.println("\nWe are sorry to hear that!");
  259.                                             break;
  260.                                         } else {
  261.                                             System.out.println("\nSomething went wrong!\nPlease try again!");
  262.                                         }
  263.                                     }
  264.                                 }
  265.                             } else {
  266.                                 if (concerts.get(0).getTicketCount() < count) {
  267.                                     if (concerts.get(0).getTicketCount() == 1) {
  268.                                         System.out.printf("\nWe have only 1 ticket for the %s's concert!\n",
  269.                                                 concerts.get(0).getBand());
  270.                                         System.out.print("Would you like to buy it: ");
  271.                                         String choice = sc.nextLine();
  272.                                         if (choice.equals("yes")) {
  273.                                             System.out.printf("\nYou bought the last ticket for the %s's concert!\n",
  274.                                                     concerts.get(0).getBand());
  275.                                             concerts.get(0).setTicketCount(10);
  276.                                             budget -= count * concerts.get(0).getTicketPrice();
  277.                                             break;
  278.                                         } else if (choice.equals("no")) {
  279.                                             System.out.println("\nWe are sorry to hear that!");
  280.                                             break;
  281.                                         } else {
  282.                                             System.out.println("\nSomething went wrong!\nPlease try again!");
  283.                                         }
  284.                                     } else {
  285.                                         System.out.printf("\nWe have only %d tickets for the %s's concert!\n",
  286.                                                 concerts.get(0).getTicketCount(), concerts.get(0).getBand());
  287.                                         System.out.print("Would you like to buy them: ");
  288.                                         String choice = sc.nextLine();
  289.                                         if (choice.equals("yes")) {
  290.                                             System.out.printf(
  291.                                                     "\nYou bought the last %d tickets for the %s's concert!\n",
  292.                                                     concerts.get(0).getTicketCount(), concerts.get(0).getBand());
  293.                                             concerts.get(0).setTicketCount(10);
  294.                                             budget -= count * concerts.get(0).getTicketPrice();
  295.                                             break;
  296.                                         } else if (choice.equals("no")) {
  297.                                             System.out.println("\nWe are sorry to hear that!");
  298.                                             break;
  299.                                         } else {
  300.                                             System.out.println("\nSomething went wrong!\nPlease try again!");
  301.                                         }
  302.                                     }
  303.                                 } else if (concerts.get(0).getTicketCount() == count) {
  304.                                     concerts.get(0).setTicketCount(10);
  305.                                     budget -= count * concerts.get(0).getTicketPrice();
  306.                                     if (count == 1) {
  307.                                         System.out.printf("\nYou bought the last ticket for the %s's concert!\n",
  308.                                                 concerts.get(0).getBand());
  309.                                     } else {
  310.                                         System.out.printf("\nYou bought the last %d tickets for the %s's concert!\n",
  311.                                                 count, concerts.get(0).getBand());
  312.                                     }
  313.                                     break;
  314.                                 } else {
  315.                                     concerts.get(0).setTicketCount(concerts.get(0).getTicketCount() - count);
  316.                                     budget -= count * concerts.get(0).getTicketPrice();
  317.                                     if (count == 1) {
  318.                                         System.out.printf("\nYou bought a ticket for the %s's concert!\n",
  319.                                                 concerts.get(0).getBand());
  320.                                     } else {
  321.                                         System.out.printf("\nYou bought %d tickets for the %s's concert!\n", count,
  322.                                                 concerts.get(0).getBand());
  323.                                     }
  324.                                     break;
  325.                                 }
  326.                             }
  327.                         }
  328.                     } else {
  329.                         System.out.printf("\nYou got %d choises\nWhich band do you choose: ", concerts.size());
  330.                         int choice = Integer.parseInt(sc.nextLine());
  331.                         if (choice <= 0 || choice > concerts.size()) {
  332.                             System.out.println("\nInvalid choice!\nPlease try again!");
  333.                         } else {
  334.                             System.out.print("How many tickets would you buy: ");
  335.                             int count = Integer.parseInt(sc.nextLine());
  336.                             if (count <= 0) {
  337.                                 System.out.println("\nInvalid ticket count!\nPlease try again!");
  338.                             } else {
  339.                                 for (int i = 0; i <= concerts.size(); i++) {
  340.                                     if (i + 1 == choice) {
  341.                                         if (budget < count * concerts.get(i).getTicketPrice()) {
  342.                                             if (count == 1) {
  343.                                                 System.out.printf(
  344.                                                         "\nSorry, but you have only %.2f $, which is not enough to buy tickets for the %s's concert!\n",
  345.                                                         budget, concerts.get(i).getBand());
  346.                                                 break;
  347.                                             } else {
  348.                                                 int availableCount = (int) (budget / concerts.get(i).getTicketPrice());
  349.                                                 if (count == 2) {
  350.                                                     System.out.printf(
  351.                                                             "\nYou can buy only 1 ticket for the %s's concert!\n",
  352.                                                             concerts.get(i).getBand());
  353.                                                     System.out.print("Would you like to buy it: ");
  354.                                                     String answer = sc.nextLine();
  355.                                                     if (answer.equals("yes")) {
  356.                                                         System.out.printf(
  357.                                                                 "\nYou bought a ticket for the %s's concert!\n",
  358.                                                                 concerts.get(i).getBand());
  359.                                                         concerts.get(i).setTicketCount(
  360.                                                                 concerts.get(i).getTicketCount() - availableCount);
  361.                                                         budget -= availableCount * concerts.get(i).getTicketPrice();
  362.                                                         break;
  363.                                                     } else if (answer.equals("no")) {
  364.                                                         System.out.println("\nWe are sorry to hear that!");
  365.                                                         break;
  366.                                                     } else {
  367.                                                         System.out
  368.                                                                 .println("\nSomething went wrong!\nPlease try again!");
  369.                                                     }
  370.                                                 } else {
  371.                                                     System.out.printf(
  372.                                                             "\nYou can buy only %d tickets for the %s's concert!\n",
  373.                                                             availableCount, concerts.get(i).getBand());
  374.                                                     System.out.print("Would you like to buy them: ");
  375.                                                     String verdict = sc.nextLine();
  376.                                                     if (verdict.equals("yes")) {
  377.                                                         System.out.printf(
  378.                                                                 "\nYou bought %d tickets for the %s's concert!\n",
  379.                                                                 availableCount, concerts.get(i).getBand());
  380.                                                         concerts.get(i).setTicketCount(
  381.                                                                 concerts.get(i).getTicketCount() - availableCount);
  382.                                                         budget -= availableCount * concerts.get(i).getTicketPrice();
  383.                                                         break;
  384.                                                     } else if (verdict.equals("no")) {
  385.                                                         System.out.println("\nWe are sorry to hear that!");
  386.                                                         break;
  387.                                                     } else {
  388.                                                         System.out
  389.                                                                 .println("\nSomething went wrong!\nPlease try again!");
  390.                                                     }
  391.                                                 }
  392.                                             }
  393.                                         } else {
  394.                                             if (concerts.get(i).getTicketCount() < count) {
  395.                                                 if (concerts.get(i).getTicketCount() == 1) {
  396.                                                     System.out.printf("\nWe have only 1 ticket for the %s's concert!\n",
  397.                                                             concerts.get(i).getBand());
  398.                                                     System.out.print("Would you like to buy it: ");
  399.                                                     String answer = sc.nextLine();
  400.                                                     if (answer.equals("yes")) {
  401.                                                         System.out.printf(
  402.                                                                 "\nYou bought the last ticket for the %s's concert!\n",
  403.                                                                 concerts.get(i).getBand());
  404.                                                         concerts.get(i).setTicketCount(10);
  405.                                                         budget -= count * concerts.get(i).getTicketPrice();
  406.                                                         break;
  407.                                                     } else if (answer.equals("no")) {
  408.                                                         System.out.println("\nWe are sorry to hear that!");
  409.                                                         break;
  410.                                                     } else {
  411.                                                         System.out
  412.                                                                 .println("\nSomething went wrong!\nPlease try again!");
  413.                                                     }
  414.                                                 } else {
  415.                                                     System.out.printf(
  416.                                                             "\nWe have only %d tickets for the %s's concert!\n",
  417.                                                             concerts.get(i).getTicketCount(),
  418.                                                             concerts.get(i).getBand());
  419.                                                     System.out.print("Would you like to buy them: ");
  420.                                                     String verdict = sc.nextLine();
  421.                                                     if (verdict.equals("yes")) {
  422.                                                         System.out.printf(
  423.                                                                 "\nYou bought the last %d tickets for the %s's concert!\n",
  424.                                                                 concerts.get(i).getTicketCount(),
  425.                                                                 concerts.get(i).getBand());
  426.                                                         concerts.get(i).setTicketCount(10);
  427.                                                         budget -= count * concerts.get(i).getTicketPrice();
  428.                                                         break;
  429.                                                     } else if (verdict.equals("no")) {
  430.                                                         System.out.println("\nWe are sorry to hear that!");
  431.                                                         break;
  432.                                                     } else {
  433.                                                         System.out
  434.                                                                 .println("\nSomething went wrong!\nPlease try again!");
  435.                                                     }
  436.                                                 }
  437.                                             } else if (concerts.get(i).getTicketCount() == count) {
  438.                                                 concerts.get(i).setTicketCount(10);
  439.                                                 budget -= count * concerts.get(i).getTicketPrice();
  440.                                                 if (count == 1) {
  441.                                                     System.out.printf(
  442.                                                             "\nYou bought the last ticket for the %s's concert!\n",
  443.                                                             concerts.get(i).getBand());
  444.                                                 } else {
  445.                                                     System.out.printf(
  446.                                                             "\nYou bought the last %d tickets for the %s's concert!\n",
  447.                                                             count, concerts.get(i).getBand());
  448.                                                 }
  449.                                                 break;
  450.                                             } else {
  451.                                                 concerts.get(i)
  452.                                                         .setTicketCount(concerts.get(i).getTicketCount() - count);
  453.                                                 budget -= count * concerts.get(i).getTicketPrice();
  454.                                                 if (count == 1) {
  455.                                                     System.out.printf("\nYou bought a ticket for the %s's concert!\n",
  456.                                                             concerts.get(i).getBand());
  457.                                                 } else {
  458.                                                     System.out.printf("\nYou bought %d tickets for the %s's concert!\n",
  459.                                                             count, concerts.get(i).getBand());
  460.                                                 }
  461.                                                 break;
  462.                                             }
  463.                                         }
  464.                                     }
  465.                                 }
  466.                             }
  467.                         }
  468.                     }
  469.                 } else if (decision.equals("no")) {
  470.                     System.out.println("\nWe are sorry to hear that!");
  471.                     break;
  472.                 } else {
  473.                     System.out.println("\nSomething went wrong!\nPlease try again!");
  474.                 }
  475.             } catch (NumberFormatException nfe) {
  476.                 System.out.println("Invalid input!");
  477.             }
  478.         }
  479.         System.out.print("\nWould you like to see other concerts: ");
  480.         String choice = sc.nextLine();
  481.         switch (choice) {
  482.         case "yes":
  483.             h.sellTickets(budget);
  484.             break;
  485.         case "no":
  486.             System.out.println("\nGoodbye!\nHave a nice day!");
  487.             break;
  488.         default:
  489.             System.out.println("\nSomething went wrong!\nPlease try again!");
  490.             h.sellTickets(budget);
  491.         }
  492.     }
  493.  
  494. }
RAW Paste Data