java - 用JAVA写一个卖通票的方法,另一个卖票的方法

标签 java object methods constructor drjava

您好,我正在尝试编写满足以下输出的代码:

Here are the booths at the start:
   Ticket booth with 5 passes and 50 tickets
   Ticket booth with 1 passes and 10 tickets
Booth 1 has made $43.0
Booth 2 has made $20.5
Here are the booths at the end:
   Ticket booth with 3 passes and 30 tickets
   Ticket booth with 0 passes and 2 tickets 

我能够在前三行做到这一点,但我在编写 sellPass() 、sellTickets() 和 MoneyMade() 的方法时遇到困难。以下是应该输出我的代码的以下测试器代码:

 public class TicketBoothTestProgram 
{
    public static void main(String args[]) 
    {
        TicketBooth  booth1, booth2;

        booth1 = new TicketBooth(5, 50);
        booth2 = new TicketBooth(1, 10);

        System.out.println("Here are the booths at the start:");
        System.out.println("   " + booth1);
        System.out.println("   " + booth2);

        // Simulate selling 2 passes, 5 tickets, 12 tickets and 3 tickets from booth1
        booth1.sellPass(); 
        booth1.sellPass(); 
        booth1.sellTickets(5); 
        booth1.sellTickets(12); 
        booth1.sellTickets(3); 

        // Simulate selling 2 passes, 5 tickets, 12 tickets and 3 tickets from booth2
        booth2.sellPass(); 
        booth2.sellPass(); 
        booth2.sellTickets(5); 
        booth2.sellTickets(12); 
        booth2.sellTickets(3); 

        // Make sure that it all worked
        System.out.println("\nBooth 1 has made $" + booth1.moneyMade);
        System.out.println("Booth 2 has made $" + booth2.moneyMade);
        System.out.println("\nHere are the booths at the end:");
        System.out.println("   " + booth1);
        System.out.println("   " + booth2);
    }
} 

这是我尝试编写方法的代码:

 public class TicketBooth 
    {
      float moneyMade;
      int availablePasses;
      int availableTickets;

      static float TICKET_PRICE = 0.50f;
      static float PASS_PRICE = 16.50f;

      public TicketBooth() 
      {
        moneyMade = 0.0f;
        availablePasses = 0;
        availableTickets = 0;
      }

      public TicketBooth(int p)
      {
        moneyMade = 0.0f;
        availablePasses = p;
        availableTickets = 0;
      }

      public TicketBooth(int p, int t) 
      {
        moneyMade = 0.0f;
        availablePasses = p;
        availableTickets = t;
      }

        public String toString() 
        {
          return("Ticket booth with " + this.availablePasses + " passes and " + this.availableTickets + 
        " tickets");
        }

        public sellPass() 
        {
          //INSERT CODE HERE FOR SELLING A PASS
        }

        public sellTickets()
        {
            //INSERT CODE HERE FOR SELLING A TICKET
        }


    }

感谢任何帮助,谢谢!

最佳答案

您的 sellPass() 方法相当简单。我添加了 boolean 返回类型,如果您用完门票或通行证,它将返回 false

public boolean sellPass() {
   //Check if you have a pass to sell
   if (availablePasses > 0) {
       //you have passes to sell
       moneyMade += moneyPerPass; // add the money
       availablePass--; //decrement pass counter 
       return true;
   }
   return false; // not enough passes to sell
}

与您的 sellTickets(int noOfTickets) 一样,您的方法应该允许您要出售多少张门票。

public boolean sellTickets(int noOfTickets) {
    if(availableTickets >= noOfTickets) {
        moneyMade += noOfTickets * pricePerTicket;
        availableTickets -= noOfTickets;
        return true;
    }
    return false;
}

关于java - 用JAVA写一个卖通票的方法,另一个卖票的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21469599/

相关文章:

java - 从 Object 到 Object[] 的转换

mysql - Laravel DB 查询数组

java - 无法显示变量

ruby-on-rails - 帮助程序与 Controller 中的 ruby​​ on rails 应用程序范围的方法?

java - 如何限制方法的 int 参数允许的范围

java - 为什么我的代码会抛出 NoSuchElementException?

Java 文件存在于 URL

java - 如何为 grails 编写 XLSX 自定义渲染器

javascript - Javascript 中破坏性与非破坏性方法的命名约定

javascript - 组织对象数组