我的if和else语句不能正常工作

时间:2015-10-25 20:55:38

标签: java

这是代码:

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语句。它确实正确编译它只是没有正确输出,我很好奇为什么?

1 个答案:

答案 0 :(得分:0)

首先,您应该查看面向对象编程的一些编程教程。您创建了一个Champion类但从不使用它。你创建了一堆你从不使用的方法,大多数只返回一个可以在类中直接访问的字段。

现在问题:你永远不会使用SemanticTuple,因此永远不会修改生命值。

您打印负值,因为您打印的当前生命值减去500。

此:

setcurrentHitPointsX(int CHP1)

技术上是这样的:

System.out.println(getCHP1() - 500);

结果为负值:System.out.println(75 - 500);

要解决此问题,您实际上可以使用您的方法:

-425

但是从你的文本中,冠军实际上会受到500点伤害,因此你应该将当前的生命值加入到计算中。