对于循环返回范围

时间:2016-11-14 04:19:38

标签: for-loop

我的BlueJ项目有两个类:StateProvince和Country。下面首先是StateProvince类,然后是我所在的Country类。我坚持使用一种方法:“public int howManyHaveThisPopulation(int min,int max)”以数百万(例如4,6)为单位,并返回有多少StateProvinces范围(例如4-6百万,包括在内)。我无法设置它并返回正确的答案。我想帮助我如何做到这一点。我的方法现在如何,错误消息是我错过了一个return语句。我知道我的方法不正确。我列出了下面的课程和我在方法上的进展:

public class StateProvince
{
private String name; //e.g. "British Columbia" or "California"
private String capital; //e.g. "Victoria or "Sacramento"
private int populationInMillions; //e.g. 4 or 38
private final static int DEFAULT_POPULATION_MILLIONS = 4;
private final static String DEFAULT_STATE_PROVINCE = "British Columbia";
private final static String DEFAULT_CAPITAL = "Victoria";

public StateProvince()
{
}

/**
* constructor that takes in all 3 parameters and assigns them if they follow              the rules:
* name: must be one of the 50 Unites States or 10 Canadian Provinces
* capital: must be the name of the capital city
* populationInMillions: must be between 0 and 38
*/

public StateProvince(String name, String capital, int populationInMillions)
{
if(isValidPopulation(populationInMillions) &&                            (isValidStateProvince(name) &&
       (isValidCapitalCity(capital))))
     {
          this.populationInMillions = populationInMillions;
          this.name = name;
          this.capital = capital;

     }else
     {
         this.populationInMillions = DEFAULT_POPULATION_MILLIONS; //
         this.name                 = DEFAULT_STATE_PROVINCE; //"British                   Columbia"
         this.capital              = DEFAULT_CAPITAL; //"Victoria"
     }
     }

     //StateProvince p1 = new StateProvince("British Columbia", "Victoria", 5);

   private boolean isValidStateProvince(String name)
   {
   String[] provinces = new String[10];
   provinces[0] = "British Columbia";
   provinces[1] = "Alberta";
   provinces[2] = "Saskatchewan";
   provinces[3] = "Manitoba";
   provinces[4] = "Ontario";
   provinces[5] = "Quebec";
   provinces[6] = "PEI";
   provinces[7] = "Newfoundland";
   provinces[8] = "New Brunswick";
   provinces[9] = "Nova Scotia";


   for(int index = 0; index < provinces.length; index++)
   {
      if(provinces[index].equalsIgnoreCase(name))
      {
          return true;
      }
      index++;
   }
   return false;           
   }

   private boolean isValidCapitalCity(String capital)
   {
   String[] capitals = new String[10];
   capitals[0] = "Victoria";
   capitals[1] = "Edmonton";
   capitals[2] = "Regina";
   capitals[3] = "Winnipeg";
   capitals[4] = "Toronto";
   capitals[5] = "Quebec City";
   capitals[6] = "Charlottetown";
   capitals[7] = "St. John's";
   capitals[8] = "Fredericton";
   capitals[9] = "Halifax";


   for(int index = 0; index < capitals.length; index++)
   {
      if(capitals[index].equalsIgnoreCase(capital))
      {
          return true;
      }
      index++;
   }
   return false;
   }

   private boolean isValidPopulation(int populationInMillions)
   {
   if(populationInMillions >= 4 || populationInMillions <= 38)
   {
       return true;
   }else
   {
       return false;
   }

   }

   public void setName()
   {
   this.name = name;
   }

   public void setCapital()
   {
   this.capital = capital;
   }

   public String getName()
   {
   return name;
   }

   public String getCapital()
   {
   return capital;
   }

   public int getPopulationInMillions()
   {
   return populationInMillions;
   }

   public String getDetails()
   {
   return ("The capital of " + getName() + " (pop. " + populationInMillions               + " million) is " + getCapital());
   }
   }


public class Country
{
private String country;
private StateProvince[] Canada;

public Country()
{
    Canada = new StateProvince[10];
    Canada[0] = new StateProvince("British Columbia", "Victoria", 4);
    Canada[1] = new StateProvince("Alberta", "Edmonton", 3);
    Canada[2] = new StateProvince("Saskatchewan", "Regina", 1);
    Canada[3] = new StateProvince("Manitoba", "Winnipeg", 1);
    Canada[4] = new StateProvince("Ontario", "Toronto", 13);
    Canada[5] = new StateProvince("Quebec", "Quebec City", 8);
    Canada[6] = new StateProvince("PEI", "Charlottetown", 0);
    Canada[7] = new StateProvince("Newfoundland", "St. John's", 0);
    Canada[8] = new StateProvince("New Brunswick", "Fredericton", 1);
    Canada[9] = new StateProvince("Nova Scotia", "Halifax", 1);
}

public void displayAllStates()
{

    for(int index = 0; index < Canada.length; index++)
    {
        if(Canada[0] != null)
        {
            System.out.println(Canada[index].getDetails());
        }
        index++;
    }

}

public void addStateProvince(StateProvince stateProvince)
{
    if(Canada != null)
    {
        for(int i = 0; i < Canada.length; i++)
        {
            if(Canada[i] == null)
            {
                Canada[i] = stateProvince;
                return;
            }
        }

    }
}

public int howManyHaveThisPopulation(int min, int max)
{

    for(int i = 0; i < Canada.length; i++)
    {
        if(i > min && i < max)
        {
            return Canada[i].getPopulationInMillions();
        }

    }
}

0 个答案:

没有答案