这是我的代码:
import java.util.*;
public class Main
{
public static void main (String[] args)
{
Scanner sc=new Scanner(System.in);
int temp;
Ticket o=new Ticket();
System.out.println("Enter no of bookings:");
int n=sc.nextInt();
System.out.println("Enter the available tickets:");
o.setAvailableTickets(sc.nextInt());
for(int i=1;i<=n;i++)
{
System.out.println("Enter the ticketid:");
o.setTicketid(sc.nextInt());
System.out.println("Enter the price:");
o.setPrice(sc.nextInt());
System.out.println("Enter the no of tickets:");
temp=sc.nextInt();
//o.calculateTicketCost(sc.nextInt());
System.out.println("Available tickets: "+o.getAvailableTickets());
System.out.println("Total amount:"+o.calculateTicketCost(temp));
System.out.println("Available ticket after booking:"+o.getAvailableTickets());
}
}
}
public class Ticket
{
private int ticketid;
private int price;
private static int availableTickets;
public void setTicketid(int ticketid)
{
this.ticketid=ticketid;
}
public int getTicketid()
{
return ticketid;
}
public void setPrice(int price)
{
this.price=price;
}
public int getPrice()
{
return price;
}
public static void setAvailableTickets(int availableTickets)
{
if(availableTickets>0)
this.availableTickets=availableTickets;
}
public static int getAvailableTickets()
{
return availableTickets;
}
public int calculateTicketCost(int nooftickets)
{
if(nooftickets<=getAvailableTickets())
{
setAvailableTickets((getAvailableTickets()-nooftickets));
return nooftickets*getPrice();
}
else
return -1;
}
}
错误是:
Ticket.java:28:错误:非静态变量,无法引用 d来自静态上下文
this.availableTickets = availableTickets;
我从setAvailableTicets()方法中删除了static关键字,但收到错误消息:
Ticket类中的setAvailableTickets方法的访问说明符/修饰符不正确-应该是[public,static]
请有人可以解释出什么问题以及如何解决该问题。