You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java获取首张最小卡牌方法返回最后最小牌问题排查

问题原因
  • 语法逻辑错误:Java 中 else 关键字无法直接携带判断条件,你代码中第二、第三个分支错误写为else (条件),正确的多分支写法应该使用else if (条件),原写法本身不符合语法规范,即使部分环境容错执行,也会导致分支判断逻辑失效。
  • 核心逻辑问题:你使用了严格小于<作为判断条件,当存在多张数值相同的最小卡牌时,靠前的最小卡牌不满足「严格小于后面所有卡牌」的条件,分支判断不会触发,会一直向后匹配,最终返回最后一个出现的最小卡牌。就像你的测试用例中,2 of diamonds 和 2 of clubs 数值相等,card2的判断条件card2.getValue() < card4.getValue()结果为false,因此不会返回card2,最终走到最后一个分支返回card4。
修复方案

修改点如下:

  1. 将带条件的else全部替换为else if,修正分支语法
  2. 将所有判断条件中的严格小于<替换为小于等于<=,保证当存在多张相同最小值卡牌时,靠前的卡牌可以满足判断条件被优先返回
  3. 修正new string的写法错误,Java中String类首字母大写,且toString()本身已经返回字符串对象,无需额外实例化。

修复后代码:

public String lowCard() {
    if (card1.getValue() <= card2.getValue() && 
            card1.getValue() <= card3.getValue() &&
            card1.getValue() <= card4.getValue()) {
        return card1.toString();
    }
    else if (card2.getValue() <= card1.getValue() &&
            card2.getValue() <= card3.getValue() &&
            card2.getValue() <= card4.getValue()) {
        return card2.toString();
    }
    else if (card3.getValue() <= card1.getValue() &&
            card3.getValue() <= card2.getValue() &&
            card3.getValue() <= card4.getValue()) {
        return card3.toString();
    }
    else {
        return card4.toString();
    }
}

内容的提问来源于stack exchange,提问作者Jay Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 20:27:03