Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Simulating a Halloween Night 1. The File TreatHouse .java contains a partial def

ID: 3759095 • Letter: S

Question

Simulating a Halloween Night

1.               The File TreatHouse.java contains a partial definition for a class representing a house giving out candy. Save it to your directory and study it to see what methods it contains. Then complete the TreatHouse class as described below.

Fill in the code for constructor, which should initialize the instance variables. Ensure that the amount of candy is always greater than zero. Print a message “We can't give out candy if we don't have any. I think we have some from last year. Yep, we have 100 pieces of candy to give out.” The constructor should also initialize the instance variable currentPot as specified by the parameter candyPot if candyPot is 1 or 2. Otherwise prints a message "Invalid input, we will use candy pot 1 first."

Fill in the code for method passOutCandy which decrease the amount of candy in the correct pot. If there are enough treats per treater for the given amount per treater, pass out candy from the current pot and switch to the other one. Else display a message that the treaters have been tricked... (no candy for them.) But do not change the current pot.

Fill in the other methods for the getters and setters.

2.               File Halloween.java contains a driver program that uses the TreatHouse class above. Save it to your directory and study it to see what it does. Then compile and run it to test the TreatHouse class.

import java.util.Random;

public class TreatHouse {

                  int candyPot1; //amount of candy in pot 1

                  int candyPot2; //amount of candy in pot 2

                  int currentPot; //1 or 2

                  int totalCandy;

                  int currentTreaters;

                  int treatsPerTreater;

                  public TreatHouse(int candyPot, int totalCandy) {

                                    //Add code here, be sure to split the candy between the pots.

                                   

                  }

                  public int getCandyCount() {

                                    return candyPot1 + candyPot2;

                  }

                  public void passOutCandy() {

                                    //If there are enough treats per treater for the given amount per treater, pass out candy

                                    //from the current pot and switch to the other one.

                                    //Else display a message that the treaters have been tricked... (no candy for them.)

                                    // but do not change the current pot

                                   

                  }

                 

                  //Sets the number of trick or treaters.

                  public void knockKnock() {

                                    Random gen = new Random(System.currentTimeMillis());

                                    this.currentTreaters = gen.nextInt(13) + 1; //1 to 13 treaters.

                  }

                 

                  //Displays how much candy in each pot, total candy left

                  public void getCandyStatus() {

                                    //add in code here

                                   

                  }

                  //returns the pot number for which candy was last given.

                  public int getLastPot() {

                                    //add code here

                  }

                  public void setTreatsPerTreater(int treatsPerTreater) {

                                    //add code here

                  }

}

import java.util.Scanner;

public class Halloween {

                  public static void main(String[] args) {

                                    Scanner scan = new Scanner(System.in);

                                    System.out.println("Which candy should we give out first? Candy in pot 1 or candy in pot 2?");

                                    int candyPot = scan.nextInt();

                                    System.out.println("How much candy did we buy?");

                                    int totalCandy = scan.nextInt();

                                    TreatHouse ourHouse = new TreatHouse(candyPot, totalCandy);

                                    while (ourHouse.getCandyCount() > 0) {

                                                      ourHouse.getCandyStatus(); //tells how much candy is left & other stuff

                                                      System.out.println("How much candy per treater should we give out?");

                                                      int treatsPerTreater = scan.nextInt();

                                                      ourHouse.setTreatsPerTreater(treatsPerTreater);

                                                                                                           

                                                      System.out.println("Knock, knock...." + "Trick or treat!");

                                                      ourHouse.knockKnock();

                                                      ourHouse.passOutCandy();

                                    }

                                    System.out.println("Time to turn off the lights and go to bed!");

                                    System.out.println("The last candy came from pot number"+ ourHouse.getLastPot());

                                    System.out.println("Happy Halloween!");

                                    scan.close();

                  }

}

Explanation / Answer

import java.util.Random;

public class TreatHouse {
   private static final String NO_CANDIES = "The treaters "
           + "have been tricked... (no candy for them.)";
   int candyPot1; // amount of candy in pot 1
   int candyPot2; // amount of candy in pot 2
   int currentPot; // 1 or 2
   int totalCandy;
   int currentTreaters;
   int treatsPerTreater;

   public TreatHouse(int candyPot, int totalCandy) {
       // Add code here, be sure to split the candy between the pots.

       if (candyPot == 1) {
           currentPot = 1;
       }else
       if (candyPot == 2) {
           currentPot = 2;
       }else{
           System.out.println("Invalid input, we will use candy pot 1 first");
           currentPot = 1;

       }
       if (totalCandy > 0) {
           candyPot1 = (int) Math.floor(totalCandy / 2);
           candyPot2 = totalCandy - candyPot1;
       } else {
           System.out.println("We can't give out candy if "
                   + "we don't have any. I think we have some from last year."
                   + " Yep, we have 100 pieces of candy to give out.");
           candyPot1 = 50;
           candyPot2 = 50;

       }

   }

   public int getCandyCount() {
       return candyPot1 + candyPot2;
   }

   public void passOutCandy() {
       // If there are enough treats per treater for the given amount per
       // treater, pass out candy
       // from the current pot and switch to the other one.
       // Else display a message that the treaters have been tricked... (no
       // candy for them.)
       // but do not change the current pot
      
       int requiredCandies = (treatsPerTreater * currentTreaters);
      
      
       if (currentPot == 1) {
           if (candyPot1 >= requiredCandies) {
               candyPot1 = candyPot1 - requiredCandies;
               if(candyPot2 > 0){
               currentPot = 2;
               }
           } else {
               System.out.println(NO_CANDIES);
           }
       } else {
           if (candyPot2 >= requiredCandies) {
               candyPot2 = candyPot2 - requiredCandies;
               if(candyPot1 > 0){
               currentPot = 1;
               }
           } else {
               System.out.println(NO_CANDIES);
           }
       }

   }

   // Sets the number of trick or treaters.
   public void knockKnock() {
       Random gen = new Random(System.currentTimeMillis());
       this.currentTreaters = gen.nextInt(13) + 1; // 1 to 13 treaters.
       System.out.println("number of treaters:"+currentTreaters);
   }

   // Displays how much candy in each pot, total candy left

   public void getCandyStatus() {
       // add in code here
       System.out.println("Candies in Pot 1:" + candyPot1);

       System.out.println("Candies in Pot 2:" + candyPot2);
       System.out.println("Total:" + (candyPot1 + candyPot2));

   }

   // returns the pot number for which candy was last given.
   public int getLastPot() {
       return currentPot;
       // add code here
   }

   public void setTreatsPerTreater(int treatsPerTreater) {
       this.treatsPerTreater = treatsPerTreater;
   }
}