java - 拥有静态变量的初始值和更新值
问题描述
样本输入和输出
输入预订数量: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
所以可用票不正确。它应该首先出现初始值,然后是更新值,但它只会出现更新值。
请帮忙
谢谢
解决方案
执行以下操作:
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
从中删除关键字。
推荐阅读
- python - 无法导入包python
- javascript - 纯 JavaScript 幻灯片播放/暂停与空格键
- python - 长日期转换为季度(用句点大写)
- android - setonclicklistner 在 kotlin 中不起作用
- node.js - 我安装了 npm live server (js.node) 但它不起作用?
- flutter - 没有为“对象”类型定义“文档”
- python - jinja2.exceptions.TemplateNotFound:results.html
- visual-studio - 在 Visual Studio 模板上创建文件夹
- python - 如何根据第二个值对元组列表进行排序而不对其进行硬编码
- android - 如何在 Android 模拟器上使用背景位置?