0

I'm trying to get my swing application to sort by profit. The user is asked to input a number of tickets sold and a ticket price, the program compares them to a overhead cost that the user inputs and returns a profit that shows as a negative number if the overhead is higher than the profit. I want the application to have a JButton to sort by profit from high to low but I can't quite get it working.

At my compareTo line for my sortByProfit method towards to bottom of the TRAPSCalendar class I get an error stating [Error:(120, 43) java: int cannot be dereferenced]

If I can do anything to make this question more clear please don't hesitate to ask. Any help is greatly appreciated

This is my method to get the Profit from the tickets sold and ticket price

public int getProfit(){
        profit = (this.ticketsSold * this.ticketPrice) - this.overhead;
        return (int)profit;
    }

This is the entirety of the code from the class the sortByProfit method resides in

import java.util.ArrayList;

public class TRAPSCalendar {

    ArrayList<Event> calendar = new ArrayList<>();

    public TRAPSCalendar(){

    }

    public boolean add(Event evt){
        try{
            calendar.add(evt);
            return true;
        }
        catch(Exception e){
            return false;
        }
    }

    public Event get(int i){
        return calendar.get(i);
    }

    public Event get(java.lang.String name){
        for (int i = 0; i < calendar.size(); i++){
            if(calendar.get(i).getEventName().equalsIgnoreCase(name)){
                return calendar.get(i);
            }
        }
        return null;
    }

    public java.util.ArrayList<Event> list(){
        return calendar;
    }

    public int size(){
        return calendar.size();
    }

    public java.util.ArrayList<Event> sortByDate(){
        ArrayList<Event> temp = new ArrayList<>();
        Event currentMin;
        int currentMinIndex;


        for (int i = 0; i < calendar.size(); i++){
            temp.add(calendar.get(i));
        }


        for (int i = 0; i < calendar.size(); i++){
            currentMin = temp.get(i);
            currentMinIndex = i;

            for (int j = i + 1; j < calendar.size(); j++){
                if (currentMin.getDate().compareTo(temp.get(j).getDate()) > 0){
                    currentMin = temp.get(j);
                    currentMinIndex = j;
                }
            }

            if (currentMinIndex != i){
                temp.set(currentMinIndex, temp.get(i));
                temp.set(i, currentMin);
            }

        }
        return temp;
    }

    public java.util.ArrayList<Event> sortByName(){
        ArrayList<Event> temp = new ArrayList<>();
        Event currentMin;
        int currentMinIndex;


        for (int i = 0; i < calendar.size(); i++){
            temp.add(calendar.get(i));
        }


        for (int i = 0; i < calendar.size(); i++){
            currentMin = temp.get(i);
            currentMinIndex = i;

            for (int j = i + 1; j < calendar.size(); j++){
                if (currentMin.getEventName().compareTo(temp.get(j).getEventName()) > 0){
                    currentMin = temp.get(j);
                    currentMinIndex = j;
                }
            }

            if (currentMinIndex != i){
                temp.set(currentMinIndex, temp.get(i));
                temp.set(i, currentMin);
            }

        }
        return temp;
    }

    public java.util.ArrayList<Event> sortByProfit(){
        ArrayList<Event> temp = new ArrayList<>();
        Event currentMin;
        int currentMinIndex;


        for (int i = 0; i < calendar.size(); i++){
            temp.add(calendar.get(i));
        }


        for (int i = 0; i < calendar.size(); i++){
            currentMin = temp.get(i);
            currentMinIndex = i;

            for (int j = i + 1; j < calendar.size(); j++){
                if (currentMin.getProfit().compareTo(temp.get(j).getProfit()) > 0){
                    currentMin = temp.get(j);
                    currentMinIndex = j;
                }
            }

            if (currentMinIndex != i){
                temp.set(currentMinIndex, temp.get(i));
                temp.set(i, currentMin);
            }

        }
        return temp;
    }


    public java.lang.String toString(){
        String events = "";
        for(int i = 0; i < calendar.size(); i++){
            events = "[Event name: " + calendar.get(i).getEventName() + "=|=" + "Event Venue: " + calendar.get(i).getEventVenue() + "=|=" + " Event Date: " + calendar.get(i).getDate() + "=|=" +
                    " Tickets Sold: " + calendar.get(i).getTicketsSold() + "=|=" + " Ticket Price: $" + calendar.get(i).getTicketPrice() + "=|=" + " Overhead Costs: $" +
                    calendar.get(i).getOverhead() + "=|=" + " Events Profit: $" + calendar.get(i).getProfit() + "=|=" + " To break even you need to sell " + calendar.get(i).getBreakEvenPoint() + "=|=" + " tickets]" + "\n";

        }

        return events;
    }

In order to aid in solving this issue I will add the remainder of the relevant code here

The Event Class

public class Event extends java.lang.Object{

    private double profit;
    private int numOfTickets;
    private int price;
    private int overhead;
    private String eventName;
    private String eventDate;
    private String eventProfit;
    private String eventVenue;
    private int ticketsSold;
    private int ticketPrice;
    private String date;

    public Event(){
        this.eventName = "";
        this.eventVenue = "";
        this.date = "";
        this.ticketsSold = 0;
        this.ticketPrice = 0;
        this.overhead = 0;
    }

    public Event(java.lang.String eventName, java.lang.String eventVenue){
        this.eventName = eventName;
        this.eventVenue = eventVenue;
        this.date = "";
        this.ticketsSold = 0;
        this.ticketPrice = 0;
        this.overhead = 0;
    }

    public Event(java.lang.String eventName, java.lang.String eventVenue, java.lang.String date, int ticketsSold, int ticketPrice, int overhead){
        this.eventName = eventName;
        this.eventVenue = eventVenue;
        this.date = date;
        this.ticketsSold = ticketsSold;
        this.ticketPrice = ticketPrice;
        this.overhead = overhead;
    }

    public boolean sellTickets(int numberOfTickets){
        if (numberOfTickets > 0){
            numOfTickets += numberOfTickets;
            return true;
        }
        else{
            return false;
        }
    }

    public int getProfit(){
        profit = (this.ticketsSold * this.ticketPrice) - this.overhead;
        return (int)profit;
    }

    public int getBreakEvenPoint(){
        return this.overhead / this.ticketPrice;
    }

    public int getTicketsSold(){
        return ticketsSold;
    }

    public void setTicketsSold(int ticketsSold){
        if(ticketsSold > 0){
            this.ticketsSold = ticketsSold;
        }
    }

    public int getTicketPrice(){
        return ticketPrice;
    }

    public void setTicketPrice(int ticketPrice){
        this.ticketPrice = ticketPrice;
    }

    public int getOverhead(){
        return overhead;
    }

    public void setOverhead(int overhead){
        this.overhead = overhead;
    }

    public java.lang.String getDate(){
        return date;
    }


    public void setDate(java.lang.String date){
        this.date = date;
    }


    public java.lang.String getEventName(){
        return eventName;
    }

    public void setEventName(java.lang.String eventName){
        this.eventName = eventName;
    }

    public java.lang.String getEventVenue(){
        return eventVenue;
    }

    public void setEventVenue(java.lang.String eventVenue){
        this.eventVenue = eventVenue;
    }


    public java.lang.String toString(){
        String events = "Event name: " + eventName + " Event Venue: " + eventVenue + " Event Date: " + date + " Tickets Sold: " + ticketsSold + " Ticket Price: $" + ticketPrice +
                " Overhead Costs: $" + overhead + " Event Profit: " + getProfit() + " To break even you need to sell " + getBreakEvenPoint() +
                "tickets" + "\n";

        return events;
    }

    public int compareName(Event other){
        if(this.getEventName().compareToIgnoreCase(other.getEventName()) > 0){
            return -1;
        }
        else if(this.getEventName().compareToIgnoreCase(other.getEventName()) == 0){
            return 0;
        }
        else{
            return 1;
        }
    }


    public int compareDate(Event other){
        if(this.getDate().compareToIgnoreCase(other.getDate()) > 0){
            return -1;
        }
        if(this.getDate().compareToIgnoreCase(other.getDate()) == 0){
            return 0;
        }
        else{
            return 1;
        }
    }


    public int compareProfit(Event other){
        if(this.getProfit() > (other.getProfit())){
            return -1;
        }
        if(this.getProfit() == (other.getProfit())){
            return 0;
        }
        else{
            return 1;
        }
    }

}
Frakcool
  • 10,088
  • 9
  • 41
  • 71
  • 1
    Welcome to stackoverflow. You need to provide the exact details of the problem and what you have tried to resolve it. Also see this link if it helps: https://stackoverflow.com/questions/19109131/int-cannot-be-dereferenced-in-java – Brooklyn99 Jul 23 '20 at 05:15

0 Answers0