简体   繁体   中英

My if and else statements are not working properly

this is the code:

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

    }
}

So when the hit points drop below 0 I want it to simply say "0" but instead it outputs a negative number either though I have a my if statements. It does compile correctly it just does not output correctly and I'm curious as to why?

First you should definitely check out some programming tutorials for object orientated programming. You create a Champion class but never use it. you create a bunch of methods which you never use and most just return a field that can be accessed directly in the class.

Now to your problem: You never use setcurrentHitPointsX(int CHP1) , and thus the hit points are never modified.

You print a negative value, since you print the current hit points minus 500.

This:

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

Is technically this:

System.out.println(75 - 500);

Which results in a negative value: -425

To solve this you could actually use your method:

setcurrentHitPoints1(-500);
System.out.println(getCHP1()); // prints 0

But from your text the champion is actually receiving 500 damage, so you should add the current hit points into the calculation.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM