2012-12-06 19 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