Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.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_Logic_Output_Blackjack - Fatal编程技术网

Java 在抽每张牌之前检查我的牌组时的奇怪输出

Java 在抽每张牌之前检查我的牌组时的奇怪输出,java,logic,output,blackjack,Java,Logic,Output,Blackjack,我不明白为什么我会得到这样的结果。每次我抽初始卡时,输出都会尝试重新创建和洗牌卡,但为什么?因为我正在检查这副牌是空的还是空的,如果是空的,就正在创建它 为什么我的代码不能工作 输出: ######### BLACK ### JACK ######### deal, hit, stay, exit: deal Creating deck... Shuffling deck... Drawing Player's card... A_♦ Creating deck..

我不明白为什么我会得到这样的结果。每次我抽初始卡时,输出都会尝试重新创建和洗牌卡,但为什么?因为我正在检查这副牌是空的还是空的,如果是空的,就正在创建它

为什么我的代码不能工作

输出:

#########    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;
}

快速解决方案

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
中所示。这可能不是一个问题(因为对象是通过引用传递的,但在依赖它之前要进行测试!),但我假设您正在将
null
传递到
initialDraw
中,因此
null
被传递到每个
drawfromdack
调用,因此每次都会创建一个新的
Deck

供您编辑代码时使用


在这种情况下,您将确保
deck
不是
null
引用,而是对实际
deck
对象的引用,因此您将向每个
drawFromDeck
调用传递对
deck
对象的引用,而不是每次都传递一个
null
引用。

您可以显示
showHands
checkDeck
中的代码吗?我认为你的问题就在那里。一个问题是hand.getName()=“Dealer”使用hand.getName().equals(“Dealer”)@Nambari,我看不出它们之间有什么区别=sin代替==,使用.equals()@Nambari,但为什么?在这种情况下,它将执行相同的操作。