首页 > 解决方案 > 使用 if 语句在单个方法中将常量相加

问题描述

我正在尝试创建一种方法,如果玩家满足某些条件,它会增加分数

所有玩家的基本费率为 60

如果大于 74 英寸高和 190 磅重是 5

如果进球数为 4

如果喝啤酒真的是 - 10

我不知道如何在一个方法中将常量添加在一起,但我可以通过创建多个方法来做到这一点

private String firstName;
private String lastName;
private int height;
private double weight;
private boolean scoresGoal;
private boolean drinksBeer;

public static final int BASE_RATE = 60;
public static final int TALL_INCHES = 74;
public static final double HEAVY_POUNDS = 190.0;
public static final int TALL_HEAVY_BONUS = 5;
public static final int SCORES_BONUS = 4; 
public static final int DRINKS_DEDUCTION = 10;

public int calculateGamePay() {

    return BASE_RATE + getTALL_HEAVY_BONUS() + getSCORES_BONUS() - getDRINKS_DEDUCTION();

}

public int getTALL_HEAVY_BONUS(){

    if(height >= 74 && weight >= 190) { 

       return TALL_HEAVY_BONUS;

    } else{  

       return 0;

    }

}

public int getSCORES_BONUS(){

    if(scoresGoal == true) {

        return SCORES_BONUS;

    } else {

        return 0;

    }

}

public int getDRINKS_DEDUCTION(){

    if(drinksBeer == true) {

        return DRINKS_DEDUCTION;

    } else {

        return 0;

    }

}

标签: javaconstants

解决方案


您可以在您的方法中使用三个if语句calculateGamePayBASE_RATE.

public int calculateGamePay() {
    int pay = BASE_RATE;
    if(height >= 74 && weight >= 190) pay += TALL_HEAVY_BONUS;
    if(scoresGoal) pay += SCORES_BONUS;
    if(drinksBeer) pay -= DRINKS_DEDUCTION;
    return pay;
}

或者,您可以使用三元运算符将所有三种方法的逻辑组合成一行。

public int calculateGamePay() {
    return BASE_RATE + (height >= 74 && weight >= 190 ? TALL_HEAVY_BONUS : 0)
        + (scoresGoal ? SCORES_BONUS : 0) - (drinksBeer ? DRINKS_DEDUCTION: 0);
}

推荐阅读