非静态变量,不能从静态上下文引用

时间:2019-12-28 13:04:52

标签: java object java-8

这是我的代码:

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]

请有人可以解释出什么问题以及如何解决该问题。

0 个答案:

没有答案