java中的扑克游戏
我的问题是,这是合理的逻辑,但执行不正确(提交服务器不会接受它)。所以我试着检查我手上的5张牌是否有一个直的数字(即2,3,4,5,6等连续的顺序),然后如果第五张牌是a,我希望它评估为值10,所以它会像6 7 8 9 a(a的牌值为1),这是我当前的代码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
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&¬OgCard.getValue()==1) ) ) {
isTrue=false;
}
}
return isTrue;
}
public静态布尔hasStraight(卡片[]卡片){
布尔isTrue=真;
对于(int atPos=0;atPosIscards
始终按“card value”排序?是的,您必须先按排名排序。然后检查23456…10JQKA(简单的情况),然后对2345A进行特殊情况检查,这也是一个直选。我无法理解您对10的看法。