簡體   English   中英

我的if和else陳述無法正常運作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM