首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理扑克手游戏中重复卡片的异常时出错。

处理扑克手游戏中重复卡片的异常时出错。
EN

Stack Overflow用户
提问于 2014-01-30 14:32:23
回答 1查看 261关注 0票数 0

我正在尝试检查扑克手游中的重复卡片,并在发生时抛出一个异常。我不知道代码有什么问题。当我使用Junit测试进行测试时..它失败了!我不知道为什么!该错误显示: java.lang.Exception:意外异常,应为异常,但有任何帮助!

//这是一个创建重复卡片异常的类

代码语言:javascript
复制
public class DuplicateCardException extends RuntimeException{

    public DuplicateCardException(String string) {
        super(string);
    }

}

//这是扑克手牌类,用于检查卡片何时会重复

代码语言:javascript
复制
import java.util.ArrayList;
import java.util.Collections;

public class PokerHand implements Comparable <PokerHand> {

public final int CARDS_NUMBER = 5;
private ArrayList<Card> cards = new ArrayList<Card>();


public PokerHand (Card card1 , Card card2, Card card3, Card card4, Card card5)  {

    cards.add(card1);
    cards.add(card2);
    cards.add(card3);
    cards.add(card4);
    cards.add(card5);
    Collections.sort(cards);
    checkCorrectness();
}

private boolean checkCorrectness() {
    if (cards.size() != CARDS_NUMBER)
        throw new DuplicateCardException("Incorrect number of cards!! ");

    for ( int i=0 ; i< cards.size()-1; i++) {
        for ( int j=i+1 ; j< cards.size(); j++) {
            if (i==j)
                continue;
            if (cards.get(i).equals(cards.get(j)))
            throw new DuplicateCardException("Duplicat card");

        }
    }

    return true;
}

@Override
public int compareTo(PokerHand arg0) {

    return 0;
}

public String toString () {
    return cards.get(0).toString() + " " + cards.get(1) + " " + cards.get(2) + " " + cards.get(3)+ " "+ cards.get(4) ;
}
}

//以下是此异常的测试代码,但它失败了!

代码语言:javascript
复制
  @Test(expected = DuplicateCardException.class)
  public void testPair2() {
    PokerHand a = new PokerHand(H3, CA, D4, H6, DA);
    a.toString();
    PokerHand b = new PokerHand(H3, C5, HA, SA, C6);
    System.out.println(a );
    System.out.println(b );

    assertTrue(a.compareTo(b) < 0);
  }
EN

回答 1

Stack Overflow用户

发布于 2014-01-30 14:45:00

它可能不会抛出预期的异常,因为您没有给它任何重复的卡片。它不是将牌相互比较,只是将同一手中的其他牌进行比较。

还有断言

代码语言:javascript
复制
assertTrue(a.compareTo(b) < 0);

如果失败,则会导致您硬编码compareTo返回0。这就是你得到的异常。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21449399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档