我是新來的java和有我的代碼的問題,該程序compliles就好了,但我有一個與TreatHouse.java,如果語句的問題,if ((totalCandy > 0) && (treatsPerTreater < totalCandy)) {
不給我正確的輸出。我試圖弄清楚如何解決這個問題,以及如何改進我目前的代碼。任何幫助將非常感激。如果陳述不正確
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;
}
}
「問題尋求幫助調試必須包括***所需的行爲***,***一個特定問題***或錯誤在問題本身中重現它所需的最短代碼。沒有明確問題陳述的問題***對其他讀者無益。請參閱:[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。「 - 理想情況下,您的問題應該包含_expected_行爲和_current_行爲。 「不給我正確的輸出」作爲問題描述是無用的。 – Xufox