電影院買票選座位的代碼
import java.util.ArrayList;
import java.util.List;
/*
?* 快樂影院
?*/
public class HappyCinema2 {
?? ?public static void main(String[] args) {
?? ??? ?//可用位置
?? ??? ?List<Integer> available=new ArrayList<>();
?? ??? ?available.add(1);
?? ??? ?available.add(2);
?? ??? ?available.add(3);
?? ??? ?available.add(6);
?? ??? ?available.add(7);
?? ??? ?//顧客需要的位置
?? ??? ?List<Integer> seats1=new ArrayList<Integer>();
?? ??? ?seats1.add(1);
?? ??? ?seats1.add(2);
?? ??? ?List<Integer> seats2=new ArrayList<Integer>();
?? ??? ?seats2.add(4);
?? ??? ?seats2.add(5);
?? ??? ?seats2.add(6);
?? ??? ?
?? ??? ?XTDCinema c=new XTDCinema(available,"新天地");
?? ??? ?new Thread(new HappyCustomer(c,seats1),"達拉").start();
?? ??? ?new Thread(new HappyCustomer(c,seats2),"東麗").start();
?? ?}
}
//顧客
class HappyCustomer implements Runnable{
?? ?XTDCinema? cinema;
?? ?List<Integer> seats;
?? ?
?? ?public HappyCustomer(XTDCinema cinema, List<Integer> seats) {
?? ??? ?this.cinema = cinema;
?? ??? ?this.seats = seats;
?? ?}
?? ?@Override
?? ?public void run() {
?? ??? ?synchronized (cinema) {
?? ??? ??? ?
?? ??? ?
?? ??? ?boolean flag=cinema.bookTickets(seats);
?? ??? ?if(flag) {
?? ??? ??? ?System.out.println("出票成功"+Thread.currentThread().getName()+"-->位置為"+seats);
?? ??? ?}else {
?? ??? ??? ?System.out.println("出票失敗"+Thread.currentThread().getName()+"-->位置不夠");
?? ??? ?}
?? ??? ?
?? ??? ?}
?? ?}
}
//影院
class XTDCinema{
?? ?List<Integer>? available;//可用的位置
?? ?String name;//名稱
?? ?public XTDCinema(List<Integer>? available,String name) {
?? ??? ?this.available=available;
?? ??? ?this.name=name;
?? ?}
?? ?//判斷是否購票成功
?? ?public boolean bookTickets(List<Integer>? seats) {
?? ??? ?System.out.println("歡迎"+this.name+"? ,可用位置為:"+available);
?? ??? ?List<Integer> copy=new ArrayList<Integer>();
?? ??? ?copy.addAll(available);
?? ??? ?//相減
?? ??? ?copy.removeAll(seats);
?? ??? ?//判斷大小
?? ??? ?if(available.size()-copy.size()!=seats.size()) {
?? ??? ??? ?return false;
?? ??? ?}
//?? ??? ?成功
?? ??? ?available=copy;
?? ??? ?
?? ??? ?return true;
?? ??? ?
?? ?}
}
標簽: