Saya memiliki kelas Acara yang diimplementasikan oleh Konser, Bermain, dan Rapat. Saya berada di kelas Tiket terpisah untuk dijual ke "acara" masing-masing. Di Tiket saya perlu getPrice() yang dimulai dari 10 dan perlu dikalikan dengan faktor harga ketika sebuah acara (yang memiliki faktor harga berbeda) dipesan.

Saya telah mencoba memanggil PRICE statis yang merupakan harga dasar untuk sebuah tiket dan memanggil event.getPriceFactor() yang mengembalikan null dan saya jelas dapat membuat instance acara ini di Ticket.


public abstract class Event {
    private String description;
    protected int ticketsSold;
    private int eventId;
    private double priceFactor;
    private static int counter = 1;
    private static final int CAPACITY = 5;
    private ObservableList<Ticket> tickets = 
    FXCollections.observableArrayList();

    /**
     * Stores the description and price factor and assigns a unique id to 
the event.
     * The constructor also allocates the array tickets.
     * 
     * @param description a description of this Play
     * @param priceFactor the price factor for this Play
     * 
     */
    public Event(String description, double priceFactor) {
        this.description = description;
        this.priceFactor = priceFactor;
        this.eventId = computeSerialNumber();
    }

    /**
     * Receives the description and stores that and a price factor of 
1.0. Besides,
     * it assigns a unique id to the event. The constructor also 
allocates the array
     * tickets.
     * 
     * @param description a description of this Play
     * 
     */
    public Event(String description) {
        this(description, 1.0);
    }

    public double getPriceFactor() {
        return priceFactor;
}
------------------------------------------------------------------------------
public class Ticket {

    private static int counter = 1;
    private int serialNumber;
    private double price;
    private static double PRICE = 10.0;
    private Event event;

    /**
     * Creates a ticket for an event. An exception is thrown if there is no space.
     * 
     * @param event the event for which the ticket is being created.
     * @throws NoSpaceException
     */
    public Ticket(Event event) throws NoSpaceException, UnsupportedOperationException { 
            event.addTicket(this);
            this.serialNumber = computeSerialNumber();
    }

    /**
     * Returns the price of the ticket
     * 
     * @return ticket price
     */
    ``public double getPrice() {
        price = Ticket.PRICE * event.getPriceFactor();
        return price;
    }

Saya mengharapkan Ticket.PRICE (10.) * event.getPriceFactor() (1.0) mengembalikan 10, tetapi mengembalikan null.

2
Michael Harrison 20 September 2019, 21:19

1 menjawab

Jawaban Terbaik

Sepertinya Anda tidak pernah menetapkan acara ke atribut tiket di konstruktor tiket Anda, oleh karena itu menjadi nilai nol dan tidak dapat mengembalikan faktor harga. coba tetapkan dan lihat apakah itu berhasil

1
Grimmpier 20 September 2019, 18:27