我正在尝试检查扑克手游中的重复卡片,并在发生时抛出一个异常。我不知道代码有什么问题。当我使用Junit测试进行测试时..它失败了!我不知道为什么!该错误显示: java.lang.Exception:意外异常,应为异常,但有任何帮助!
//这是一个创建重复卡片异常的类
public class DuplicateCardException extends RuntimeException{
public DuplicateCardException(String string) {
super(string);
}
}//这是扑克手牌类,用于检查卡片何时会重复
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) ;
}
}//以下是此异常的测试代码,但它失败了!
@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);
}发布于 2014-01-30 14:45:00
它可能不会抛出预期的异常,因为您没有给它任何重复的卡片。它不是将牌相互比较,只是将同一手中的其他牌进行比较。
还有断言
assertTrue(a.compareTo(b) < 0);如果失败,则会导致您硬编码compareTo返回0。这就是你得到的异常。
https://stackoverflow.com/questions/21449399
复制相似问题