Advertisement
tsveten_kavrakov

03.WildFarm

Nov 14th, 2019
336
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.63 KB | None | 0 0
  1. package WildFarm;
  2.  
  3. public abstract class Food {
  4.     private Integer quantity;
  5.  
  6.     public Food(Integer quantity) {
  7.         this.quantity = quantity;
  8.     }
  9.  
  10.     public Integer getQuantity() {
  11.         return quantity;
  12.     }
  13. }
  14.  
  15. public class Vegetable extends Food {
  16.     public Vegetable(Integer quantity) {
  17.         super(quantity);
  18.     }
  19. }
  20. public class Meat extends Food {
  21.     public Meat(Integer quantity) {
  22.         super(quantity);
  23.     }
  24. }
  25.  
  26. public abstract class Animal {
  27.     protected String animalName;
  28.     protected String animalType;
  29.     protected double animalWeight;
  30.     protected Integer foodEaten;
  31.  
  32.     public Animal(String animalName, String animalType, double animalWeight) {
  33.         this.animalName = animalName;
  34.         this.animalType = animalType;
  35.         this.animalWeight = animalWeight;
  36.         this.foodEaten=0;
  37.     }
  38.  
  39.     public abstract void makeSound();
  40.     public abstract void eat(Food food);
  41. }
  42.  
  43. public abstract class Mammal extends Animal{
  44.     protected String livingRegion;
  45.     public Mammal(String animalName, String animalType, double animalWeight,String livingRegion) {
  46.         super(animalName, animalType, animalWeight);
  47.         this.livingRegion=livingRegion;
  48.     }
  49.  
  50.     @Override
  51.     public String toString() {
  52.         DecimalFormat df=new DecimalFormat("#.#");
  53.         return String.format("%s[%s, %s, %s, %d]",animalType,animalName,df.format(animalWeight),this.livingRegion,this.foodEaten);
  54.     }
  55. }
  56. public class Mouse extends Mammal {
  57.     public Mouse(String animalName, String animalType, double animalWeight, String livingRegion) {
  58.         super(animalName, animalType, animalWeight, livingRegion);
  59.     }
  60.  
  61.     @Override
  62.     public void makeSound() {
  63.         System.out.println("SQUEEEAAAK!");
  64.     }
  65.  
  66.     @Override
  67.     public void eat(Food food) {
  68.         if (food instanceof Vegetable){
  69.             foodEaten+=food.getQuantity();
  70.         }else{
  71.             System.out.println("Mouses are not eating that type of food!");
  72.         }
  73.     }
  74. }
  75.  
  76. public class Zebra extends Mammal {
  77.     public Zebra(String animalName, String animalType, double animalWeight, String livingRegion) {
  78.         super(animalName, animalType, animalWeight, livingRegion);
  79.     }
  80.  
  81.     @Override
  82.     public void makeSound() {
  83.         System.out.println("Zs");
  84.     }
  85.  
  86.     @Override
  87.     public void eat(Food food) {
  88.          if (food instanceof Vegetable){
  89.             foodEaten+=food.getQuantity();
  90.         }else{
  91.              System.out.println("Zebras are not eating that type of food!");
  92.         }
  93.     }
  94. }
  95.  
  96. public class Cat extends Felime {
  97.     private String breed;
  98.  
  99.     public Cat(String animalName, String animalType, double animalWeight, String livingRegion,String breed) {
  100.         super(animalName, animalType, animalWeight, livingRegion);
  101.         this.breed=breed;
  102.     }
  103.  
  104.     @Override
  105.     public String toString() {
  106.         DecimalFormat df=new DecimalFormat("#.#");
  107.         return String.format("%s[%s, %s, %s, %s, %d]",this.animalType,this.animalName,this.breed,df.format(this.animalWeight),this.livingRegion,this.foodEaten);
  108.     }
  109.  
  110.     @Override
  111.     public void makeSound() {
  112.         System.out.println("Meowwww");
  113.     }
  114.  
  115.     @Override
  116.     public void eat(Food food) {
  117.         this.foodEaten+=food.getQuantity();
  118.     }
  119. }
  120.  
  121. public class Tiger extends Felime {
  122.  
  123.     public Tiger(String animalName, String animalType, double animalWeight, String livingRegion) {
  124.         super(animalName, animalType, animalWeight, livingRegion);
  125.     }
  126.  
  127.     @Override
  128.     public void makeSound() {
  129.         System.out.println("ROAAR!!!");
  130.     }
  131.  
  132.     @Override
  133.     public void eat(Food food) {
  134.         if (food instanceof Meat){
  135.             foodEaten+=food.getQuantity();
  136.         }else{
  137.             System.out.println("Tigers are not eating that type of food!");
  138.         }
  139.  
  140.     }
  141. }
  142.  
  143. //--------------------------------------------------------------------------------------------------------------
  144.  
  145. public class Main {
  146.  
  147.     public static void main(String[] args) {
  148.         Scanner sc=new Scanner(System.in);
  149.         String strInput="";
  150.         while(!(strInput=sc.nextLine()).equals("End")){
  151.             String[] details=strInput.split("\\s+");
  152.             //{AnimalType} {AnimalName} {AnimalWeight} {AnimalLivingRegion} [{CatBreed} = Only if its cat]
  153.             //FoodType ; quantity
  154.             String animalType=details[0];
  155.             String animalName=details[1];
  156.             double animalWeight=Double.parseDouble(details[2]);
  157.             String livingRegion=details[3];
  158.             String breed=animalType.equals("Cat") ? details[4] : "";
  159.             Animal animal=null;
  160.             switch (animalType){
  161.                 case "Mouse":
  162.                     animal=new Mouse(animalName,animalType,animalWeight,livingRegion);
  163.                     break;
  164.                 case "Zebra":
  165.                     animal=new Zebra(animalName,animalType,animalWeight,livingRegion);
  166.                     break;
  167.                 case "Cat":
  168.                     animal=new Cat(animalName,animalType,animalWeight,livingRegion,breed);
  169.                     break;
  170.                 case "Tiger":
  171.                     animal=new Tiger(animalName,animalType,animalWeight,livingRegion);
  172.                     break;
  173.             }
  174.             String[] foodDetails=sc.nextLine().split("\\s+");
  175.             String foodType=foodDetails[0];
  176.             int quantity=Integer.parseInt(foodDetails[1]);
  177.             Food food=foodType.equals("Vegetable") ? new Vegetable(quantity) : new Meat(quantity);
  178.             animal.makeSound();
  179.             animal.eat(food);
  180.             System.out.println(animal.toString());
  181.         }
  182.     }
  183. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement