2012-12-06 22 views
0

我不明白为什么我会得到这样的输出。每次我画出初始卡时,输出都会尝试重新创建和重新洗牌,但为什么?因为我正在检查一副牌是空的还是空的,如果是,它正在被创建。在每张卡片被抽出之前检查我的卡片组时出现奇怪的输出

为什么我的代码不工作?

输出:

######### BLACK ### JACK ######### 

deal, hit, stay, exit: deal 

Creating deck... 
Shuffling deck... 

Drawing Player's card... A_♦ 
Creating deck... 
Shuffling deck... 

Drawing Dealer's card... X_X 
Creating deck... 
Shuffling deck... 

Drawing Player's card... 6_♥ 
Creating deck... 
Shuffling deck... 

Drawing Dealer's card... X_X 

Dealers Hand: A_♦ X_X = 11 
Players Hand: 6_♥ A_♦ = 17 

初步绘制方法:

private static Deck initialDraw(Deck deck, Hand player, Hand dealer) 
{ 
    drawFromDeck(deck, player); 
    drawFromDeck(deck, dealer); 
    drawFromDeck(deck, player); 
    drawFromDeck(deck, dealer); 

    System.out.print("\n"); 

    showHands(player, dealer); 
    compareHands(player, dealer); 

    return deck; 
} 

当我使用下面的代码我没有得到这个输出,它是如何不同?我仍然引用相同的数组并将其传回,不是吗?

private static Deck initialDraw(Deck deck, Hand player, Hand dealer) 
{ 
    deck = checkDeck(deck); 

    drawFromDeck(deck, player); 
    drawFromDeck(deck, dealer); 
    drawFromDeck(deck, player); 
    drawFromDeck(deck, dealer); 

    System.out.print("\n"); 

    showHands(player, dealer); 
    compareHands(player, dealer); 

    return deck; 
} 
+0

你可以显示'showHands'和'checkDeck'的代码吗?我认为你的问题在于此。 – jrd1

+0

一个问题是hand.getName()== “经销商” 使用hand.getName()。等于( “经销商”) – kosa

+0

@Nambari,我没有看到=它们之间的任何差S – HelpNeeder

回答

1

快速解决

private static Deck initialDraw(Deck deck, Hand player, Hand dealer) 

    { 
     deck = drawFromDeck(deck, player); 
     deck = drawFromDeck(deck, dealer); 
     deck = drawFromDeck(deck, player); 
     deck = drawFromDeck(deck, dealer); 

     System.out.print("\n"); 

     showHands(player, dealer); 
     compareHands(player, dealer); 

     return deck; 
    } 

说明

drawFromDeck要创建/更新甲板和返回这一点,但在initialDraw看到更新不及时的变量。这可能不是这样的问题(因为对象通过引用传递,但在依赖它之前进行测试!),但是我假设你传递nullinitialDraw,所以null正在传递给每个drawFromDeck调用,所以一个新的Deck每次创建。

为了您的编辑,你的代码工作

在这种情况下,您可以确保deck不是null参考,但实际Deck对象的引用,所以你会路过一个参考一个Deck对象到每个drawFromDeck调用,而不是每次都传递一个参考null

+0

你是绝对正确的。谢谢。 – HelpNeeder