Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package gd2.theatreapp;
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.HashSet;
- import java.util.LinkedHashSet;
- import java.util.LinkedList;
- import java.util.List;
- public class Theatre {
- private final String threatreName;
- private final int numRows;
- private final int seatsPerRow;
- public List<Seat> seats = new ArrayList<Seat>();
- public Theatre(String threatreName, int numRows, int seatsPerRow)
- {
- this.numRows = numRows;
- this.seatsPerRow = seatsPerRow;
- this.threatreName = threatreName;
- int lastRow = 'A' + (numRows-1);
- for(char row = 'A'; row <= lastRow; ++row)
- {
- for(int seatNum = 1; seatNum <= seatsPerRow; ++seatNum)
- {
- Seat seat = new Seat(row + String.format("%02d", seatNum));
- seats.add(seat);
- }
- }
- }
- public String getThreatreName() {
- return threatreName;
- }
- //Write a method called reserveSeat that takes in a seatNumber and tries to reserve it
- //This may fail for at least two reasons - seat could already be reserved, or doesn't exist
- //The seat class has a method called reserve
- //goes through each one individually
- public boolean reserveSeat(String seatNumber)
- {
- System.out.println("Complex version");
- Seat requestedSeat = null;
- for(Seat seat : seats)
- {
- System.out.println(".");
- if(seat.getSeatNumber().equals(seatNumber))
- {
- requestedSeat = seat;
- break;
- }
- }
- if(requestedSeat == null)
- {
- System.out.println("There is no seat " + seatNumber);
- return false;
- }
- return requestedSeat.reserve();
- }
- //goes through log_2(seat num)
- public boolean reserveSeatBS(String seatNumber)
- {
- int low = 0;
- int high = seats.size()-1;
- while(low<=high)
- {
- System.out.println(".");
- int mid = (low + high)/2;
- Seat midSeat = seats.get(mid);
- int cmp = midSeat.getSeatNumber().compareTo(seatNumber);
- if(cmp < 0)
- {
- low = mid+1;
- }
- else if(cmp > 0)
- {
- high = mid-1;
- }
- else
- {
- return seats.get(mid).reserve();
- }
- }
- System.out.println("There is no seat " + seatNumber);
- return false;
- }
- //print the seats, for testing
- public void printSeats()
- {
- for(int i=0; i < seats.size(); i++)
- {
- if(i % seatsPerRow == 0 && i != 0)
- {
- System.out.println();
- }
- System.out.print(seats.get(i).getSeatNumber() + " ");
- }
- System.out.println("\n================================================");
- }
- public class Seat implements Comparable<Seat>
- {
- private final String seatNumber;
- private boolean reserved = false;
- public Seat(String seatNumber)
- {
- this.seatNumber = seatNumber;
- }
- public boolean reserve()
- {
- if(reserved == true)
- {
- System.out.println("Sorry, " + seatNumber + " is not available");
- return false;
- }
- else
- {
- this.reserved = true;
- System.out.println("Seat " + seatNumber + " reserved");
- return true;
- }
- }
- public boolean cancel()
- {
- if(this.reserved == false)
- {
- return false;
- }
- else
- {
- this.reserved = false;
- System.out.println("Reservation of seat " + seatNumber + " cancelled");
- return true;
- }
- }
- public String getSeatNumber() {
- return seatNumber;
- }
- @Override
- public int compareTo(Seat seat) {
- return this.seatNumber.compareToIgnoreCase(seat.getSeatNumber());
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement