【问题标题】:java blackjack pair handjava二十一点对手
【发布时间】:2017-04-05 11:11:12
【问题描述】:

所以基本上我正在尝试测试我的 5 张牌中是否有一对(两张牌具有相同的值 (1-9))并且我收到一个未知错误,这是我的代码

错误:

java.lang.AssertionError at org.junit.Assert.fail(Assert.java:86)...

代码:

public static boolean hasPair(Card[] cards) {
    Deck theDeck = new Deck();
    cards = theDeck.deal(5);

    int k=0;

    for (int atPos = 0; atPos<5; atPos++){ 
        for (int atPos2 = atPos+1; atPos2<5; atPos2++){ 

            if(cards[atPos].getValue() == cards[atPos2].getValue()){ 
                k++;
            } 
        }
    }
    if (k==2){ 
        return true; 
    }
    else { 
        return false; 
    }

失败的 JUnit

@Test
public void testExampleTest_SinglePairTest() {
    Card[] testHand = new Card[5];
    testHand[0] = new Card(1,1);
    testHand[1] = new Card(2,1);
    testHand[2] = new Card(2,1);
    testHand[3] = new Card(4,1);
    testHand[4] = new Card(5,1);
    assertTrue(HandEvaluatorBBXP.hasPair(testHand));

【问题讨论】:

  • "...I'm getting an unknown error" -- 什么?如果您不发布错误消息的文本,我们将完全不知道您的错误——为什么不这样做?
  • java.lang.AssertionError at org.junit.Assert.fail(Assert.java:86)... 我不知道错误是什么,因为我将它提交到提交服务器.
  • a) 我们是在玩扑克还是二十一点? b) 如果有 2 对怎么办? c) 一个愚蠢的编译器会说“并非所有路径都返回一个值”
  • 不是测试不编译,只是测试的东西都没有通过测试。至少这是我可以从org.junit.Assert.fail 收集到的信息。你能发布失败的测试类吗?
  • 编译只是图片的一小部分。编译良好的代码仍然可能包含需要调试才能发现的严重逻辑错误,我建议您这样做——启动您的调试器并通过它运行您的代码以检查其运行时的状态。

标签: java arrays poker blackjack


【解决方案1】:

似乎没有必要将Card[] cards 作为参数传递给hasPair 方法,因为您立即将变量设置为deck.deal() 返回的任何值。所以传入的值永远不会被使用。

这很可能是您的测试失败的原因,因为您的测试数据是 hasPair 方法实际用于评估测试的数据。

【讨论】:

    猜你喜欢
    • 2016-11-09
    • 2014-10-27
    • 2011-01-25
    • 2012-04-25
    • 2013-10-07
    • 2014-08-12
    • 1970-01-01
    • 1970-01-01
    • 2013-06-02
    相关资源
    最近更新 更多