首页 > 解决方案 > 拥有静态变量的初始值和更新值

问题描述

样本输入和输出

输入预订数量:2

输入可用门票:25

输入ticketid:123

输入价格:100

输入票数:5

可用门票:25

总金额:500

预订后可用票:20

输入ticketid: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 }

主.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

所以可用票不正确。它应该首先出现初始值,然后是更新值,但它只会出现更新值。

请帮忙

谢谢

标签: java

解决方案


执行以下操作:

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:

注意:您不必要地声明availableTicketsstatic. static从中删除关键字。


推荐阅读