具有静态变量的初始值和更新值

时间:2019-12-18 21:29:26

标签: java

样本输入和输出

输入预订编号: 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

因此可用票证不正确。它应该首先是初始值,然后是更新后的值,但它只会是更新后的值。

请帮助

谢谢

2 个答案:

答案 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());