2016-03-19 1 views
-1

Я использую инстанцируемые классы и вложенные операторы if в Java. Когда я запускаю это всегда выводит 500, даже если входной сигнал больше, чем 5.Java вложенные операторы if

Лето: менее 5 человек составляет 500, более 5 человек составляет 400

Осень: менее 5 700 , более 5 600

зима: менее 5 человек 400, более 5 человек составляет 300

Пружина: менее 5 200, более чем 5 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 класс:

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"); 


    } 
} 
+0

Неясно, что начальное значение 'cost' имеет. Можете ли вы прояснить это? А также: какова фактическая ценность «сезона»? – MWiesner

+2

Поделиться другим кодом. Это одно не скажет много. С чего вы инициализировали стоимость? Какова ценность сезона? – Learner

+0

Пожалуйста, напишите полный код – Rehman

ответ

0

Вы не установить количество людей.
Добавить строку

mySeasons.setPeople(people); 

перед тем

mySeasons.compute(); 
+0

О, боже, спасибо тебе, я застрял в течение нескольких часов, фиксируя мои заявления: D –