根据Java checkstyle,方法中有太多返回语句,如何简化代码以符合最大2个返回?
我玩百家乐游戏的方法之一是检查银行家是否可以根据玩家的手牌价值抽第三张牌 游戏本身就有很多条件,比如银行家是否可以抽签,这让我创建了一个包含很多条件语句的方法。我有太多的返回语句,我不知道如何将其限制为2根据Java checkstyle,方法中有太多返回语句,如何简化代码以符合最大2个返回?,java,return,checkstyle,Java,Return,Checkstyle,我玩百家乐游戏的方法之一是检查银行家是否可以根据玩家的手牌价值抽第三张牌 游戏本身就有很多条件,比如银行家是否可以抽签,这让我创建了一个包含很多条件语句的方法。我有太多的返回语句,我不知道如何将其限制为2 /** * Determines if banker draws third card. * @param playerCard Card object * @param bankerHand Hand object * @return boolean
/**
* Determines if banker draws third card.
* @param playerCard Card object
* @param bankerHand Hand object
* @return boolean if banker gets third card.
*/
public static boolean mustHit(Card playerCard, Hand bankerHand) {
int playerValue = valueOf(playerCard);
int bankerValue = valueOf(bankerHand);
if (playerValue == 2 || playerValue == 3) { //player has 2 or 3
return bankerValue >= 0 && bankerValue <= 4; //banker must have 0-4
} else if (playerValue == 4 || playerValue == 5) { //player has 4 or 5
return bankerValue >= 0 && bankerValue <= 5; //banker must have 0-5
} else if (playerValue == 6 || playerValue == 7) { //player has 6 or 7
return bankerValue >= 0 && bankerValue <= 8; //banker must have 0-8
} else if (playerValue == 8) { //player has 8
return bankerValue >= 0 && bankerValue <= 2; //banker must have 0-2
} else {
return bankerValue >= 0 && bankerValue <= 3;
//if none of the above, banker must have 0-3
}
}
/**
*确定银行是否提取第三张卡。
*@param玩家卡对象
*@param bankerHand对象
*@如果庄家获得第三张卡,返回布尔值。
*/
公共静态布尔mustHit(纸牌玩家卡、手牌银行卡){
int playerValue=valueOf(playerCard);
int bankerValue=valueOf(bankerHand);
如果(playerValue==2 | | playerValue==3){//玩家有2个或3个
返回bankerValue>=0&&bankerValue=0&&bankerValue=0&&bankerValue=0&&bankerValue=0&&bankerValue=0&&bankerValue=0&&bankerValue=0&&bankerValue=0&&bankerValue您可以将bankerValue设置为变量,并在每个if语句中设置其值,然后在if语句末尾返回bankerValue stat元素。您可以将bankerValue设置为变量,并在每个if语句中设置其值,然后在if语句末尾返回bankerValue。您可以尝试使用Switch语句
int playerValue = valueOf(playerCard);
int bankerValue = valueOf(bankerHand);
switch(playerValue){
case 2: // Will roll down to the next condition.
case 3: return bankerValue >= 0 && bankerValue <= 4; break;
case 4:
case 5: return bankerValue >= 0 && bankerValue <= 5; break;
case 6:
case 7: return bankerValue >= 0 && bankerValue <= 8; break;
case 8: return bankerValue >= 0 && bankerValue <= 2; break;
default:return bankerValue >= 0 && bankerValue <= 3;
int playerValue=valueOf(playerCard);
int bankerValue=valueOf(bankerHand);
开关(播放值){
案例2://将向下滚动到下一个条件。
案例3:返回bankerValue>=0&&bankerValue=0&&bankerValue=0&&bankerValue=0&&bankerValue您可以尝试使用Switch语句
int playerValue = valueOf(playerCard);
int bankerValue = valueOf(bankerHand);
switch(playerValue){
case 2: // Will roll down to the next condition.
case 3: return bankerValue >= 0 && bankerValue <= 4; break;
case 4:
case 5: return bankerValue >= 0 && bankerValue <= 5; break;
case 6:
case 7: return bankerValue >= 0 && bankerValue <= 8; break;
case 8: return bankerValue >= 0 && bankerValue <= 2; break;
default:return bankerValue >= 0 && bankerValue <= 3;
int playerValue=valueOf(playerCard);
int bankerValue=valueOf(bankerHand);
开关(播放值){
案例2://将向下滚动到下一个条件。
案例3:返回bankerValue>=0&&bankerValue=0&&bankerValue=0&&bankerValue=0&&bankerValue您可以这样重写您的方法:
/**
* Determines if banker draws third card.
* @param playerCard Card object
* @param bankerHand Hand object
* @return boolean if banker gets third card.
*/
public static boolean mustHit(Card playerCard, Hand bankerHand) {
int playerValue = valueOf(playerCard);
int bankerValue = valueOf(bankerHand);
int bankerLimit;
switch (playerValue) {
case 2:
case 3:
bankerLimit = 4;
break;
case 4:
case 5:
bankerLimit = 5;
break;
case 6:
case 7:
bankerLimit = 8;
break;
case 8:
bankerLimit = 2;
break;
default:
bankerLimit = 8;
break;
}
return bankerValue >= 0 && bankerValue <= bankerLimit;
}
/**
*确定银行是否提取第三张卡。
*@param玩家卡对象
*@param bankerHand对象
*@如果庄家获得第三张卡,返回布尔值。
*/
公共静态布尔mustHit(纸牌玩家卡、手牌银行卡){
int playerValue=valueOf(playerCard);
int bankerValue=valueOf(bankerHand);
国际银行限制;
开关(播放值){
案例2:
案例3:
银行限制=4;
打破
案例4:
案例5:
银行限制=5;
打破
案例6:
案例7:
银行限制=8;
打破
案例8:
银行限制=2;
打破
违约:
银行限制=8;
打破
}
return bankerValue>=0&&bankerValue您可以像这样重写您的方法:
/**
* Determines if banker draws third card.
* @param playerCard Card object
* @param bankerHand Hand object
* @return boolean if banker gets third card.
*/
public static boolean mustHit(Card playerCard, Hand bankerHand) {
int playerValue = valueOf(playerCard);
int bankerValue = valueOf(bankerHand);
int bankerLimit;
switch (playerValue) {
case 2:
case 3:
bankerLimit = 4;
break;
case 4:
case 5:
bankerLimit = 5;
break;
case 6:
case 7:
bankerLimit = 8;
break;
case 8:
bankerLimit = 2;
break;
default:
bankerLimit = 8;
break;
}
return bankerValue >= 0 && bankerValue <= bankerLimit;
}
/**
*确定银行是否提取第三张卡。
*@param玩家卡对象
*@param bankerHand对象
*@如果庄家获得第三张卡,返回布尔值。
*/
公共静态布尔mustHit(纸牌玩家卡、手牌银行卡){
int playerValue=valueOf(playerCard);
int bankerValue=valueOf(bankerHand);
国际银行限制;
开关(播放值){
案例2:
案例3:
银行限制=4;
打破
案例4:
案例5:
银行限制=5;
打破
案例6:
案例7:
银行限制=8;
打破
案例8:
银行限制=2;
打破
违约:
银行限制=8;
打破
}
return bankerValue>=0&&bankerValue更适合于。你不应该信任自动机器而不是你的个人判断。更适合于。你不应该信任自动机器而不是你的个人判断。