[英]My if and else statements are not working properly
這是代碼:
public class Champion
{
private String championName; // champion name
private String championSummonersName; // Champion summoner's name
int maxHitPoints1; // Champion's max hit points
int currentHitPoints1; // Champion's current hit points
int maxHitPoints2; // summoner's max hit points
int currentHitPoints2; // summoner's current hit points
double globalbuff = 1.1;
Champion(int MHP1, int CHP1, int MHP2, int CHP2)
{
maxHitPoints1 = 100;
currentHitPoints1 = 75;
maxHitPoints2 = 125;
currentHitPoints2 = 110;
}
public Champion(String name, String summoners)
{
championName = name;
championSummonersName = summoners;
}
public void setchampionName(String name)
{
championName = name; // store the champion name
} // end method setchampionName
// method to set the summoners name
public void setchampionSummonersName(String summoners)
{
championSummonersName = summoners; // store the summoners name
}
// method to retrieve the champion name
public String getchampionName()
{
return championName;
} // end method getchampionName
// method to retrieve the summoners name
public String getchampionSummonersName()
{
return championSummonersName;
}
public void setmaxHitPoints1(int MHP1)
{
if (getMHP1() < 0)
{
System.out.println(1);
}
else
maxHitPoints1 = MHP1;
}
public int getMHP1()
{
return maxHitPoints1;
}
public void setmaxHitPoints2(int MHP2)
{
if (getMHP2() < 0)
{
System.out.println(1);
}
else
maxHitPoints2 = MHP2;
}
public int getMHP2()
{
return maxHitPoints2;
}
public void setcurrentHitPoints1(int CHP1)
{
if (CHP1 <= 0)
{
currentHitPoints1 = 0;
System.out.println("Champion is dead");
}
else
currentHitPoints1 = CHP1;
}
public int getCHP1()
{
return this.currentHitPoints1;
}
public void setcurrentHitPoints2(int CHP2)
{
if (CHP2 <= 0)
{
currentHitPoints2 = 0;
System.out.println("summoner is dead");
}
else
currentHitPoints2 = CHP2;
}
public int getCHP2()
{
return currentHitPoints2;
}
public void displayMessage()
{
// this statement calls getCharacterName to get the
// name of the course this DnDCharacterSheet represents
System.out.printf("Champion is %s!\n", getchampionName());
System.out.printf("Cain's max hit points are: " + getMHP1());
System.out.printf("\nCain's current hit points are: " + getCHP1());
/* write code to output the character's player name */
System.out.printf("\nSummoner is %s!", getchampionSummonersName());
System.out.printf("\nAble's max hit points are: " + getMHP2());
System.out.printf("\nAble's current hit points are: " + getCHP2());
System.out.printf("\n\nGlobal buff by 10 percent to max and current hit points\n");
System.out.printf("\nCain's buff\nmax hit points: " + globalbuff * getMHP1());
System.out.printf("\ncurrent hit points: " + globalbuff * getCHP1());
System.out.printf("\nAble's buff\nmax hit points: " + globalbuff * getMHP2());
System.out.printf("\ncurrent hit points! " + globalbuff * getCHP2());
System.out.printf("\n\nRKO OUTTA NOWHERE!!!! CAUSING 500 DAMAGE TO EVERYTHING\n");
System.out.printf("\nCain after RKO\nmax hit points: " + globalbuff * getMHP1());
System.out.printf("\n");
System.out.printf("current hit points: ");
System.out.println(getCHP1() - 500);
System.out.printf("\n\n");
System.out.printf("Able after RKO\nmax hit points: " + globalbuff * getMHP2());
System.out.printf("\n");
System.out.printf("current hit points: ");
System.out.println(getCHP2() - 500);
}
}
因此,當命中點降至0以下時,我希望它只說“ 0”,但是盡管我有一個if語句,但它還是輸出一個負數。 它可以正確編譯,只是不能正確輸出,我很好奇為什么?
首先,您絕對應該查看一些面向對象編程的編程教程。 您創建了冠軍類,但從未使用過。 您創建了一堆從未使用過的方法,而大多數方法只是返回一個可以直接在類中訪問的字段。
現在解決您的問題:您永遠不會使用setcurrentHitPointsX(int CHP1)
,因此永遠不會修改生命值。
您打印一個負值,因為您打印當前的生命值減去500。
這個:
System.out.println(getCHP1() - 500);
在技術上是這樣的:
System.out.println(75 - 500);
得出負值: -425
為了解決這個問題,您實際上可以使用您的方法:
setcurrentHitPoints1(-500);
System.out.println(getCHP1()); // prints 0
但是從您的文字來看,冠軍實際上會受到500點傷害,因此您應該在計算中加上當前的生命值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.