mercredi 4 novembre 2015

If statement not properly working

I'm new to java and having an issue with my code, the program compliles just fine, but I'm having a problem with the if statement in TreatHouse.java, if ((totalCandy > 0) && (treatsPerTreater < totalCandy)) { is not giving me the right output. I'm trying to figure out how to fix that as well as improve my current code so far. Any help would be much appreciated.

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();
}

}

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.
  currentPot = candyPot;
  if (totalCandy <=0) {
      System.out.println("We can't give out candy if we don't have amy. I think we have some from last year. " +
                         "Yep, we have 100 pieces of candy to give out.");
      totalCandy = 100;
      candyPot1 = totalCandy/2;
      candyPot2 = totalCandy/2;
  }

  if (totalCandy > 0) {
      totalCandy = totalCandy;
      candyPot1 = totalCandy/2;
      candyPot2 = totalCandy/2;
  }                            
}

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
    if ((totalCandy > 0) && (treatsPerTreater < totalCandy)) {
      if (true) {
         if (currentPot == 1) {
             candyPot1 = candyPot1 - (this.currentTreaters*treatsPerTreater);
             currentPot = 2;
         }

         if (currentPot == 2) {
             candyPot2 = candyPot2 - (this.currentTreaters*treatsPerTreater);
             currentPot = 1;
         }

         // System.out.println("Pot " + currentPot + " doesn't exist. Try again next time");
      }
  }
  else
      System.out.println("You have been tricked! No candy for you >:D!!!!");             
}


//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
  System.out.println("Candy in Pot1: " + candyPot1 + "  Candy in Pot2: " + candyPot2);
  System.out.println("Total candy left: " + (candyPot1 + candyPot2));

}

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

  return 1;
}

public void setTreatsPerTreater(int treatsPerTreater) {
    //add code here
  treatsPerTreater = treatsPerTreater;
}

}

Aucun commentaire:

Enregistrer un commentaire