public class TicketMachine
{
private int price;
private int balance;
private int total;
private int refund;
private int tickets;
public TicketMachine(int ticketCost)
{
price = ticketCost;
balance = 0;
total = 0;
refund = 0;
tickets = 0;
}
public int getPrice()
{
return price;
}
public void insertMoney(int amount)
{
if(amount > 0)
{
balance += amount;
}
else
{
System.
out.
println("Please inser a sensible amount of money"); }
}
public void printTicket()
{
if(balance > 0)
{
if(balance >= price)
{
tickets = purchaseTickets();
int i = 1;
while (i <= tickets)
{
System.
out.
println("-------------------"); System.
out.
println("--The BlueJ Line---"); System.
out.
println("--Ticket " + i
); System.
out.
println("- " + price
+ " cents"); System.
out.
println("-------------------");
i++;
}
total += balance;
refund = refundBalance();
if(refund==0)
{
System.
out.
println("No Change Given"); }
else
{
System.
out.
println("Amount to refund: " +refund
+ "cents"); }
balance = 0;
}
else
{
System.
out.
println("Please inser " +(price
- balance
) +"more cents"); }
}
else
{
System.
out.
println("Please insert a positive amount of money"); }
}
public int refundBalance()
{
int amountToRefund;
amountToRefund = balance - price * tickets;
balance = 0;
return amountToRefund;
}
public int purchaseTickets()
{
int numberOfTickets;
numberOfTickets = balance / price;
return numberOfTickets;
}
}
cHVibGljIGNsYXNzIFRpY2tldE1hY2hpbmUKewogICAgcHJpdmF0ZSBpbnQgcHJpY2U7CiAgICBwcml2YXRlIGludCBiYWxhbmNlOwogICAgcHJpdmF0ZSBpbnQgdG90YWw7CiAgICBwcml2YXRlIGludCByZWZ1bmQ7CiAgICBwcml2YXRlIGludCB0aWNrZXRzOwogICAgCiAgICBwdWJsaWMgVGlja2V0TWFjaGluZShpbnQgdGlja2V0Q29zdCkKICAgIHsKICAgICAgICBwcmljZSA9IHRpY2tldENvc3Q7CiAgICAgICAgYmFsYW5jZSA9IDA7CiAgICAgICAgdG90YWwgPSAwOwogICAgICAgIHJlZnVuZCA9IDA7CiAgICAgICAgdGlja2V0cyA9IDA7CiAgICB9CiAgICAKICAgIHB1YmxpYyBpbnQgZ2V0UHJpY2UoKQogICAgewogICAgICAgIHJldHVybiBwcmljZTsKICAgIH0KICAgIAogICAgcHVibGljIHZvaWQgaW5zZXJ0TW9uZXkoaW50IGFtb3VudCkKICAgIHsKICAgICAgICBpZihhbW91bnQgPiAwKQogICAgICAgIHsKICAgICAgICAgICAgYmFsYW5jZSArPSBhbW91bnQ7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiUGxlYXNlIGluc2VyIGEgc2Vuc2libGUgYW1vdW50IG9mIG1vbmV5Iik7CiAgICAgICAgfQogICAgfQogICAgCiAgICBwdWJsaWMgdm9pZCBwcmludFRpY2tldCgpCiAgICB7CiAgICAgICAgaWYoYmFsYW5jZSA+IDApCiAgICAgICAgewogICAgICAgICAgICBpZihiYWxhbmNlID49IHByaWNlKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB0aWNrZXRzID0gcHVyY2hhc2VUaWNrZXRzKCk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGludCBpID0gMTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgd2hpbGUgKGkgPD0gdGlja2V0cykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIi0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIi0tVGhlIEJsdWVKIExpbmUtLS0iKTsKICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIi0tVGlja2V0ICIgKyBpKTsKICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIi0gIiArIHByaWNlICsgIiBjZW50cyIpOwogICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiLS0tLS0tLS0tLS0tLS0tLS0tLSIpOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdG90YWwgKz0gYmFsYW5jZTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgcmVmdW5kID0gcmVmdW5kQmFsYW5jZSgpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpZihyZWZ1bmQ9PTApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJObyBDaGFuZ2UgR2l2ZW4iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkFtb3VudCB0byByZWZ1bmQ6ICIgK3JlZnVuZCsgImNlbnRzIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGJhbGFuY2UgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJQbGVhc2UgaW5zZXIgIiArKHByaWNlIC0gYmFsYW5jZSkgKyJtb3JlIGNlbnRzIik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJQbGVhc2UgaW5zZXJ0IGEgcG9zaXRpdmUgYW1vdW50IG9mIG1vbmV5Iik7CiAgICAgICAgfQogICAgfQogICAgCiAgICBwdWJsaWMgaW50IHJlZnVuZEJhbGFuY2UoKQogICAgewogICAgICAgIGludCBhbW91bnRUb1JlZnVuZDsKICAgICAgICAKICAgICAgICBhbW91bnRUb1JlZnVuZCA9IGJhbGFuY2UgLSBwcmljZSAqIHRpY2tldHM7CiAgICAgICAgCiAgICAgICAgYmFsYW5jZSA9IDA7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIGFtb3VudFRvUmVmdW5kOwogICAgfQogICAgCiAgICBwdWJsaWMgaW50IHB1cmNoYXNlVGlja2V0cygpCiAgICB7CiAgICAgICAgaW50IG51bWJlck9mVGlja2V0czsKICAgICAgICAKICAgICAgICBudW1iZXJPZlRpY2tldHMgPSBiYWxhbmNlIC8gcHJpY2U7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIG51bWJlck9mVGlja2V0czsKICAgIH0KfQo=