这是代码:
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语句。它确实正确编译它只是没有正确输出,我很好奇为什么?
答案 0 :(得分:0)
首先,您应该查看面向对象编程的一些编程教程。您创建了一个Champion类但从不使用它。你创建了一堆你从不使用的方法,大多数只返回一个可以在类中直接访问的字段。
现在问题:你永远不会使用SemanticTuple
,因此永远不会修改生命值。
您打印负值,因为您打印的当前生命值减去500。
此:
setcurrentHitPointsX(int CHP1)
技术上是这样的:
System.out.println(getCHP1() - 500);
结果为负值:System.out.println(75 - 500);
要解决此问题,您实际上可以使用您的方法:
-425
但是从你的文本中,冠军实际上会受到500点伤害,因此你应该将当前的生命值加入到计算中。