I need to access the private variables from the following class listing (Species.java) in order to use them in the KlingonOx.java class.
The purpose of the KlingonOx.java class is to determine after how many years the population of the Elephant species will be larger than the population of the Klingon Ox species.
Here is the Species.java class:
import java.util.Scanner;
public class Species
{
private String name;
private int population;
private double growthRate;
public void readInput()
{
Scanner keyboard = new Scanner(System.in);
System.out.println("What is the species' name?");
name = keyboard.nextLine();
System.out.println("What is the population of the species?");
population = keyboard.nextInt();
while(population < 0)
{
System.out.println("Population cannot be negative.");
System.out.println("Reenter population:");
population = keyboard.nextInt();
}
System.out.println("Enter growth rate (% increase per year):");
growthRate = keyboard.nextDouble();
}
public void writeOutput()
{
System.out.println("Name = " + name);
System.out.println("Population = " + population);
System.out.println("Growth rate = " + growthRate + "%");
}
public int predictPopulation(int years)
{
int result = 0;
double populationAmount = population;
int count = years;
while( (count>0) && (populationAmount>0) )
{
populationAmount = (populationAmount + (growthRate/100) * populationAmount);
count --;
}
if (populationAmount > 0)
result = (int)populationAmount;
return result;
}
public Species(String name)
{
name = name;
population = 0;
growthRate = 0.0;
}
public Species(int population)
{
name = "";
if (population > 0)
population = population;
else
{
System.out.println("ERROR: using a negative" + "population.");
System.exit(0);
}
growthRate = 0.0;
}
public Species(double growthRate)
{
name = "";
population = 0;
growthRate = growthRate;
}
public Species(String name, int population, double growthRate)
{
name = name;
if (population > 0)
population = population;
else
{
System.out.println("ERROR: using a negative" + "population.");
System.exit(0);
}
growthRate = growthRate;
}
public Species()
{
name = "";
population = 0;
growthRate = 0;
}
public void setSpecies(String newName, int newPopulation, double newGrowthRate)
{
name = newName;
if (newPopulation >= 0)
population = newPopulation;
else
{
System.out.println("ERROR: using a negative " + "population.");
System.exit(0);
}
growthRate = newGrowthRate;
}
public void setName(String name)
{
name = name;
}
public void setPopulation(int population)
{
if (population > 0)
population = population;
else
{
System.out.println("ERROR: using a negative" + "population.");
System.exit(0);
}
}
public void setGrowthRate(double growthRate)
{
growthRate = growthRate;
}
public String getName()
{
return name;
}
public int getPopulation()
{
return population;
}
public double getGrowthRate()
{
return growthRate;
}
public boolean equals(Species otherObject)
{
return (name.equalsIgnoreCase(otherObject.name)) &&
(population == otherObject.population) &&
(growthRate == otherObject.growthRate);
}
}
Here is the KlingonOx.java class:
import java.util.Scanner;
public class KlingonOx extends Species
{
public static void main(String[] args)
{
new KlingonOx().run();
}
public void run()
{
Species klingonox = new Species();
Species elephant = new Species();
System.out.println("Please enter data on the species Klingon Ox.");
klingonox.readInput();
klingonox.writeOutput();
klingonox.setPopulation(int population);
population = population;
klingonox.setGrowthRate(double growthRate);
growthRate = growthRate;
System.out.println("Please enter data on the species Elephant.");
elephant.readInput();
elephant.writeOutput();
elephant.setPopulation(population);
population = population;
elephant.setGrowthRate(growthRate);
growthRate = growthRate;
int year = 0;
if(klingonox.population < elephant.population)
{
while(klingonox.population < elephant.population)
{
klingonox.population = (int)(klingonox.population + (klingonox.population * (klingonox.growthRate/100) ) );
elephant.population=(int)(elephant.population + (elephant.population * (elephant.growthRate/100) ) );
year++;
}
System.out.println("KLINGON OX EXCEEDS ELEPHANT IN" + year + "YEARS");
}
else
{
while(klingonox.population > elephant.population)
{
klingonox.population=(int)(klingonox.population+(klingonox.population*(klingonox.growthRate/100)));
elephant.population=(int)(elephant.population+(elephant.population*(elephant.growthRate/100)));
year++;
}
System.out.println("ELEPHANT EXCEEDS KLINGON OX IN" + year + "YEARS");
}
}
}
The KlingonOx.java class gives me the error that "population" and "growthRate" are private instance variables in Species and therefore cannot be accessed. I've tried to use the getPopulation and getGrowthRate method calls to retrieve the variables but I'm not sure how to do so correctly.
Any feedback is appreciated.