java中的扑克游戏

java中的扑克游戏,java,arrays,poker,Java,Arrays,Poker,我的问题是,这是合理的逻辑,但执行不正确(提交服务器不会接受它)。所以我试着检查我手上的5张牌是否有一个直的数字(即2,3,4,5,6等连续的顺序),然后如果第五张牌是a,我希望它评估为值10,所以它会像6 7 8 9 a(a的牌值为1),这是我当前的代码 public static boolean hasStraight(Card [] cards) { boolean isTrue = false; for(int atPos =0; atPos<cards.leng

我的问题是,这是合理的逻辑,但执行不正确(提交服务器不会接受它)。所以我试着检查我手上的5张牌是否有一个直的数字(即2,3,4,5,6等连续的顺序),然后如果第五张牌是a,我希望它评估为值10,所以它会像6 7 8 9 a(a的牌值为1),这是我当前的代码

public static boolean hasStraight(Card [] cards) {
    boolean isTrue = false; 
    for(int atPos =0; atPos<cards.length-1; atPos++){ 
        Card ogCard = cards[atPos];  
        Card notOgCard = cards[atPos+1];

        if (ogCard.getValue() == (notOgCard.getValue()-1)){
            if ((cards[3]).getValue()==9){ 
                if (cards[4].getValue() ==1); 
                isTrue = true; //accounting for ace in last position
            }
            else if(ogCard.getValue() == (notOgCard.getValue()-1)){ 
                isTrue = true; //accounting for ace not in first position
            }
        }

    }
    return isTrue;
}
public静态布尔hasStraight(卡片[]卡片){
布尔isTrue=假;

对于(int-atPos=0;atPos,您的代码似乎走错了方向

首先将isTrue设置为false,然后在数组按严格递增顺序排列时将其设置为true。因此,如果前两个都是1,2,它将解析为true。 我会在开始时将其设置为true,如果数组的顺序不是递增的,则将其设置为false

你对ifs和其他ifs的构造也…很有趣。
if((cards[3]).getValue()==9){
行很可能永远不会按您希望的方式运行,因为
ogCard.getValue()==(notOgCard.getValue()-1)
not为真(因此第二个if语句永远不会运行)当ace处于最后一个位置时,我会删除包装if语句,因为它并没有真正测试任何有用的东西

您描述的方法也无法处理不在最后位置的有效ACE

我的建议如下:

public static boolean hasStraight(Card [] cards) {
boolean isTrue = true; 
for(int atPos =0; atPos<cards.length-1; atPos++){ 
    Card ogCard = cards[atPos];  
    Card notOgCard = cards[atPos+1];

     if (! (ogCard.getValue() == (notOgCard.getValue()-1) || (ogCard.getValue()==9&&notOgCard.getValue()==1) ) ) {
       isTrue=false;
     }

}
return isTrue;
}
public静态布尔hasStraight(卡片[]卡片){
布尔isTrue=真;

对于(int atPos=0;atPosIs
cards
始终按“card value”排序?是的,您必须先按排名排序。然后检查23456…10JQKA(简单的情况),然后对2345A进行特殊情况检查,这也是一个直选。我无法理解您对10的看法。