样本输入和输出
输入预订编号: 2
输入可用的票证: 25
输入票证编号: 123
输入价格: 100
输入票证编号: 5
可购买的门票:25
总金额:500
预订后可获得的门票:20
输入票证编号: 124
输入价格: 100
输入票证编号: 2
可用票:20
总金额:200
预订后可获得的门票:18
我的代码是: Ticket.java
1 public class Ticket {
2 private int ticketid;
3 private int price;
4 int amount;
5 private static int availableTickets;
6
7 public void setTicketid(int ticketid){
8 this. ticketid=ticketid ;
9 }
10 public void setPrice(int price ){
11 this.price = price;
12 }
13
14 public void setAvailableTickets(int availableTickets ){
15 if(availableTickets>0)
16 this.availableTickets = availableTickets ;
17 }
18 public int calculateTicketCost(int noofticket)
19 {
20 if(availableTickets>noofticket)
21 {
22 availableTickets = availableTickets - noofticket;
23 setAvailableTickets(availableTickets);
24 amount = noofticket*price;
25 return amount;
26 }
27 else
28 return -1;
29 }
30 public int getAvailableTickets(){
31 return this.availableTickets;
32 }
33 public int getTicketid(){
34 return this.ticketid;
35 }
36 public int getPrice(){
37 return this.price;
38 }
39
40 }
Main.java
1 import java.util.Scanner;
2 public class Main {
3 public static void main (String[] args) {
4 Scanner sc = new Scanner(System.in);
5 Ticket t = new Ticket();
6 System.out.println("Enter the no of bookings:");
7 int b = sc.nextInt();
8 System.out.println("Enter the available tickets:");
9 t.setAvailableTickets(sc.nextInt());
10 while(b>0){
11 System.out.println("Enter the ticketid:");
12 t.setTicketid(sc.nextInt());
13 System.out.println("Enter the price:");
14 t.setPrice(sc.nextInt());
15 System.out.println("Enter the no of tickets:");
16 int n = sc.nextInt();
17 int cost = t.calculateTicketCost(n);
18 System.out.println("Available Tickets: "+t.getAvailableTickets());
19 System.out.println("Total amount:"+cost);
20 System.out.println("Available ticket after booking:"+t.getAvailableTickets());
21 }
22 }
23 }
我的代码输出为:
输入预订编号:
2
输入可用的票证:
25
输入票证编号:
123
输入价格:
100
输入门票编号:
5
可用的门票:20
总金额:500
预订后可用票:20
输入票证编号:
124
输入价格:
100
输入门票编号:
2
可用的门票:18
总金额:200
预订后可用的票:18
因此可用票证不正确。它应该首先是初始值,然后是更新后的值,但它只会是更新后的值。
请帮助
谢谢
答案 0 :(得分:1)
执行以下操作:
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Ticket t = new Ticket();
System.out.println("Enter the no of bookings:");
int b = sc.nextInt();
System.out.println("Enter the available tickets:");
t.setAvailableTickets(sc.nextInt());
while (b > 0) {
System.out.println("Enter the ticketid:");
t.setTicketid(sc.nextInt());
System.out.println("Enter the price:");
t.setPrice(sc.nextInt());
System.out.println("Enter the no of tickets:");
int n = sc.nextInt();
System.out.println("Available Tickets: " + t.getAvailableTickets());
int cost = t.calculateTicketCost(n);
System.out.println("Total amount:" + cost);
System.out.println("Available ticket after booking:" + t.getAvailableTickets());
}
}
}
如您所见,我已将System.out.println("Available Tickets: " + t.getAvailableTickets());
放在int cost = t.calculateTicketCost(n);
之前。
示例运行:
Enter the no of bookings:
2
Enter the available tickets:
25
Enter the ticketid:
123
Enter the price:
100
Enter the no of tickets:
5
Available Tickets: 25
Total amount:500
Available ticket after booking:20
Enter the ticketid:
124
Enter the price:
100
Enter the no of tickets:
2
Available Tickets: 20
Total amount:200
Available ticket after booking:18
Enter the ticketid:
注意:您不必要地将availableTickets
声明为static
。从中删除static
关键字。
答案 1 :(得分:0)
您可以创建一个新变量,以保存Ticket
类上的票证的初始数量。
private int initialTickets;
public void setAvailableTickets(int availableTickets ){
if(availableTickets>0) {
this.availableTickets = availableTickets;
initialTickets = availableTickets;
}
public int getInitialTickets() {
return initialTickets;
}
然后在您的主屏幕上
System.out.println("Available Tickets: " + t.getInitialAmountTickets());