Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在扑克游戏中处理重复卡的异常时出错。。_Java_Class_Exception_Junit - Fatal编程技术网

Java 在扑克游戏中处理重复卡的异常时出错。。

Java 在扑克游戏中处理重复卡的异常时出错。。,java,class,exception,junit,Java,Class,Exception,Junit,我试图检查扑克游戏中的重复卡,并在发生时抛出异常。我不知道代码有什么问题。当我使用Junit测试时。。它失败了!我不知道为什么!错误为:java.lang.Exception:意外异常,应为,但为 任何帮助 //这是一个创建重复卡异常的类 public class DuplicateCardException extends RuntimeException{ public DuplicateCardException(String string) { super(st

我试图检查扑克游戏中的重复卡,并在发生时抛出异常。我不知道代码有什么问题。当我使用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) ;
}
}
import java.util.ArrayList;
导入java.util.Collections;
公共级扑克手工具{
公共最终积分卡数量=5;
私有ArrayList卡=新ArrayList();
公共扑克手(卡牌1、卡牌2、卡牌3、卡牌4、卡牌5){
卡片。添加(卡片1);
卡片。添加(卡片2);
卡片。添加(卡片3);
卡片。添加(卡片4);
卡片。添加(卡片5);
收藏。分类(卡片);
检查正确性();
}
私有布尔校验正确性(){
if(cards.size()!=卡片编号)
抛出新的DuplicateCardException(“卡数不正确!!”);
对于(int i=0;i
//这是这个异常的测试代码,但它失败了

  @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);
  }
@Test(预期=DuplicateCardException.class)
公共void testPair2(){
扑克手a=新扑克手(H3,CA,D4,H6,DA);
a、 toString();
扑克手b=新扑克手(H3、C5、HA、SA、C6);
系统输出打印项次(a);
系统输出打印ln(b);
资产真实性(a.与(b)相比<0);
}

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

还有这个断言

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

如果由于硬编码compareTo而失败,则返回0。这就是您得到的异常。

显示stacktrace please.java.lang.exception:意外异常,预期异常,但位于org.junit.internal.runners.statements.ExpectException.evaluate(ExpectException.java:28)org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)org.junit.runners.BlockJUnit4ClassRunner.runner.runned(BlockJUnit4ClassRunner.java:70)这意味着没有抛出异常,但assertTrue发现了“false”。不,assertTrue也成功了。我想只有预期的异常
DuplicateCardException
没有抛出。@K.C.但我在函数CheckCorrectanness中抛出了它是的,你比我先抛出了。:)确实,比雷托是罪魁祸首。