I have written the program for the below assignment, but I am not getting the correct output. Below is the assignment and the program I have written along with the output I get. Please help me troubleshoot!
Write a program that simulates the battle between a cat and mice.
Use this class hierarchy:
Cat
· Kills 1 mouse a day
· Does not reproduce
Mice
· Have a chance to reproduce as long as conditions are met
· Reproduction only happens when mice are over 1 and 1 of each sex is present
Simulation Control
· Simulation continues as long as population is greater than 1 and less than 10
Driver main method should be as shown below: (replacing comment with missing piece)
import java.util.ArrayList;
public class LastFirstWeek5CatMouse
{
public static void main(String [] args)
{
Cat sylvester = new Cat();
ArrayList mice = new ArrayList();
mice.add(new Mouse());
mice.add(new Mouse());
mice.add(new Mouse());
mice.get(0).setSex(true);
mice.get(1).setSex(false);
mice.get(2).setSex(false);
while (mice.size() >1 && mice.size() < 10)
{
for (Mouse m:mice)
m.grow();
sylvester.grow();
Mouse.mate(mice);
sylvester.eat(mice);
}
//INCLUDE CODE FOR OUTPUT HERE.
}
}
Output code should output:
Depending on if the population of mice is greater than or equal 10:
Mice RULE, Cats Drool Mice Population: ## (integer value)
or
Cats RULE, Mice Drool Cat Weight (in mice): ##.## (double value, 2 decimal places)
Output should output results 10 times. Modification of or before while loop may be required. See sample output below.
Mammal.java class
Instance variables:
name (string)
age (integer)
weight (double)
isMale (Boolean)
Mammal constructor : (default constructor)
Set age to 1.
grow method :
Increases age of mammal by 1.
Accessor / mutator methods for each instance variable above:
Set or returns values as appropriate for data type specified.
Cat.java class
eat method: (receive mouse arraylist as argument)
Randomly removes a mouse from the population 70% of the time and increases cat weight by the chosen mouse weight. Only increase weight if mouse is removed/eaten. (See chapter 5, lottery example, for random example)
grow method:
Set the cats age to the current age plus 1. (use accessor/mutator methods)
Mouse.java class
Mouse constructor: (default constructor)
Randomly choose sex and assign to isMale as appropriate.
Set age to 1.
Set weight to 1.
grow method:
Increase age of mouse by 1 and weight of mouse by 1% of current weight.
mate method: (static method, receive mouse arraylist as argument)
Randomly choose 2 mice objects from arraylist and if conditions are correct, proceed with mating.
Successful mating conditions are:
· 1 male, 1 female mouse
· Both mice older than 1 day
If successful mating, randomly create between 0-4 mice and append to arraylist received as argument.
Sample session (requires no user input):
Mice RULE, Cats Drool Mice Population: 11
Cats RULE, Mice Drool Cat Weight (in mice): 2.03
Mice RULE, Cats Drool Mice Population: 10
Cats RULE, Mice Drool Cat Weight (in mice): 2.05
This is what I have.
/**Mammal.java**/
public class Mammal
{
private String name; //name of the mammal
private int age; //age of mammal
private double weight; //weight of the mammal
private boolean isMale; //sex of the mammal
public Mammal()
{
age=1;
}
public void grow()
{
age++;
}
public void setName(String n)
{
name=n;
}
public void setAge(int a)
{
age=a;
}
public void setWeight(double w)
{
weight=w;
}
public void setSex(boolean value)
{
isMale=value;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
public double getWeight()
{
return weight;
}
public boolean getSex()
{
return isMale;
}
}//end of class
/**Cat.java**/
import java.util.ArrayList;
import java.util.Random;
public class Cat extends Mammal
{
Random r;
public Cat()
{
}
public void eat(ArrayListmice)
{
r=new Random();
Mouse m=mice.get(r.nextInt(mice.size()));
this.setAge(this.getAge()+m.getAge());
mice.remove(m);
}
public void grow()
{
super.grow();
}
}//end of class
/**Mouse.java**/
import java.util.Random;
import java.util.ArrayList;
public class Mouse extends Mammal
{
public static Random r; //creates a new instance of Mouse
public Mouse()
{
r=new Random();
this.setSex(r.nextBoolean());
this.setAge(1);
this.setWeight(1.0);
}
public void grow()
{
super.grow();
double weight=this.getWeight();
weight += weight * 0.01;
this.setWeight(weight);
}
public static void mate(ArrayList mice)
{
Mouse m1=mice.get(r.nextInt(mice.size()));
Mouse m2=mice.get(r.nextInt(mice.size()));
if((m1.getAge()>=1) && (m2.getAge()>=1))
{
int num = r.nextInt(5);
for(int i=0;i mice.add(new Mouse());
}
}
}//end of class
/**FirstLastWeek5CatMouse.java**/
import java.util.ArrayList;
import java.util.Scanner;
public class FirstLastWeek5CatMouse
{
public static void main(String [] args)
{
Cat sylvester = new Cat();
ArrayListmice = new ArrayList();
mice.add(new Mouse());
mice.add(new Mouse());
mice.add(new Mouse());
mice.get(0).setSex(true);
mice.get(1).setSex(false);
mice.get(2).setSex(false);
Scanner scan=new Scanner(System.in);
while (mice.size()>1 && mice.size()< 10)
{
for (Mouse m:mice)
m.grow();
sylvester.grow();
Mouse.mate(mice);
sylvester.eat(mice);
System.out.println("Mice RULE, Cats Drool Mice Population: " + mice.size());
System.out.println("Cats RULE, Mice Drool Cat Weight(in mice): " + sylvester.getWeight());
System.out.println("");
}
}
}//end of class
My Ouput is as Follows:
Mice RULE, Cats Drool Mice Population: 4
Cats RULE, Mice Drool Cat Weight(in mice): 0.0
Mice RULE, Cats Drool Mice Population: 5
Cats RULE, Mice Drool Cat Weight(in mice): 0.0
Mice RULE, Cats Drool Mice Population: 5
Cats RULE, Mice Drool Cat Weight(in mice): 0.0
Mice RULE, Cats Drool Mice Population: 4
Cats RULE, Mice Drool Cat Weight(in mice): 0.0
Mice RULE, Cats Drool Mice Population: 3
Cats RULE, Mice Drool Cat Weight(in mice): 0.0
Mice RULE, Cats Drool Mice Population: 3
Cats RULE, Mice Drool Cat Weight(in mice): 0.0
Mice RULE, Cats Drool Mice Population: 5
Cats RULE, Mice Drool Cat Weight(in mice): 0.0
Mice RULE, Cats Drool Mice Population: 7
Cats RULE, Mice Drool Cat Weight(in mice): 0.0
Mice RULE, Cats Drool Mice Population: 9
Cats RULE, Mice Drool Cat Weight(in mice): 0.0
Mice RULE, Cats Drool Mice Population: 11
Cats RULE, Mice Drool Cat Weight(in mice): 0.0
Press any key to continue . . .