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,但为什么?在这种情况下,它将执行相同的操作。