-1

I'm using an instantiable class and nested if statements in Java. When I run this it always outputs 500 even when the input is more than 5.

Summer: less than 5 people is 500, more than 5 people is 400

Autumn: less than 5 is 700, more than 5 is 600

Winter:less than 5 people is 400, more than 5 people is 300

Spring: less than 5 is 200, more than 5 is 100

public class Seasons{

//data members
private String season;
private int people;
private int cost;

//constructor
public Seasons(){
season="";
people=0;

}

    //set methods
    public void setSeason(String season){
        this.season=season;
    }

    public void setPeople(int people){
        this.people=people;
    }

    //compute method
    public void compute(){
        if(season.equals ("summer")){
            if(people<=5){
                cost=500;
            }
            else{
                cost=400;
            }
        }


        else if(season.equalsIgnoreCase("autumn")){
            if(people<=5){
                cost=700;
            }
            else{
                cost=600;
            }
        }

        else if(season.equalsIgnoreCase("winter")){
            if(people<=5){
                cost=400;
            }
            else{
                cost=300;
            }
        }
        else if(season.equalsIgnoreCase("spring")){
            if(people<=5){
                cost=200;
            }
            else{
                cost=100;
            }


        }
}




    //get method
    public int getCost(){
        return cost;
    }
}

App class:

import javax.swing.JOptionPane;
public class SeasonsApp{
    public static void main(String args[]){

        //declare variables
         String season;
         int people;
         int cost;

         //declare objects
         Seasons mySeasons;

         //create objects
         mySeasons=new Seasons();

         //input
         season=JOptionPane.showInputDialog(null,"what season is it");
         people=Integer.parseInt(JOptionPane.showInputDialog(null,"How many people are going?"));

         //set
         mySeasons.setSeason(season);

         //compute
         mySeasons.compute();

         //get
         cost=mySeasons.getCost();

         //output
         JOptionPane.showMessageDialog(null,"your cost is " + cost + " euro");


    }
}
ncirl.eva
  • 15
  • 5

1 Answers1

0

You don't set the number of people.
Add the line

mySeasons.setPeople(people); 

before

mySeasons.compute();
Turamarth
  • 2,282
  • 4
  • 25
  • 31