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

学习Java—;对一些代码感到困惑

学习Java—;对一些代码感到困惑,java,Java,我正在阅读一本关于Java的书,到目前为止我已经理解了其中的大部分内容。然而,我遇到了一些我似乎无法理解的代码。这是一个简单的21点游戏: public class CardDeckTest { public static void main(String args[]) { CardDeck deck = new CardDeck(); System.out.println("Deck Listing:"); deck.list();

我正在阅读一本关于Java的书,到目前为止我已经理解了其中的大部分内容。然而,我遇到了一些我似乎无法理解的代码。这是一个简单的21点游戏:

public class CardDeckTest {

    public static void main(String args[]) {
        CardDeck deck = new CardDeck();
        System.out.println("Deck Listing:");
        deck.list();
        Card card = deck.deal();
        System.out.println("Dealt " + card);
        card = deck.deal();
        System.out.println("Dealt " + card);
        System.out.println("Top index: " + deck.getTopIndex());
        deck.reset();
        System.out.println("Reset deck... Top index: " + deck.getTopIndex());
        card = deck.deal();
        System.out.println("Dealt " + card);
        System.out.println("The last card is " + deck.getCard(deck.getNumCards() - 1));
    }
}
让我困惑的一行是
Card-Card=deck.deal()到目前为止,我已经看到了与第二行类似的行,其中有一个“新”的。这条线在干什么?为什么那里没有一个“新的”

我相信它指的是CardDeck中的这个

public Card deal() {
        Card dealt = cards[top];
        top ++;
        if (top >= cards.length) reset();
        return dealt;
    }

谢谢大家!

它在CardDeck的特定实例上调用deal方法,并返回存储在局部变量Card中的Card实例。这有帮助吗?

它在CardDeck的特定实例上调用deal方法,并返回存储在局部变量Card中的Card实例。这有帮助吗?

方法
deal()
返回一个
Card
实例,如您在行中所示

return dealt;
实例被分配给

方法
deal()
返回一个
实例,如您在行中所示

return dealt;

实例被分配给

卡组已经在代码顶部分配了卡对象。此方法只是返回对牌组顶部卡的引用,然后增加牌组顶部。这样可以防止在后续调用时重新绘制卡。当顶部超出牌组限制时,它将重置顶部,以便您可以再次抽牌。

牌组已在代码顶部分配了卡对象。此方法只是返回对牌组顶部卡的引用,然后增加牌组顶部。这样可以防止在后续调用时重新绘制卡。当顶部超出牌组限制时,它会重置顶部,以便您可以再次抽牌。

卡已存在于
卡[top]
;它已经被创建。
以下行导致名为
card
card
类型的变量引用它:

Card card = deck.deal();
在Java中,许多变量可以引用同一个对象。声明引用并不意味着您需要一个
new
对象:

Deck gameDeck = new Deck(); // same deck

Deck bobDeck   = gameDeck;
Deck aliceDeck = gameDeck;  // two players

卡已存在于
卡[顶部]
中;它已经被创建。
以下行导致名为
card
card
类型的变量引用它:

Card card = deck.deal();
在Java中,许多变量可以引用同一个对象。声明引用并不意味着您需要一个
new
对象:

Deck gameDeck = new Deck(); // same deck

Deck bobDeck   = gameDeck;
Deck aliceDeck = gameDeck;  // two players
线路

Card card = deck.deal()
正在将卡对象分配给变量“Card”。当您看到“新建”的实例时,如:

CardDeck deck = new CardDeck();
它只是将CardDeck对象分配给变量“deck”

两者之间的主要区别在于,您正在创建一个不存在的新CardDeck对象,并将其分配给变量“deck”。对于deck.deal(),您将获得一个存在于某处的卡片对象,并将其分配给“Card”

希望这有助于

Card card = deck.deal()
正在将卡对象分配给变量“Card”。当您看到“新建”的实例时,如:

CardDeck deck = new CardDeck();
它只是将CardDeck对象分配给变量“deck”

两者之间的主要区别在于,您正在创建一个不存在的新CardDeck对象,并将其分配给变量“deck”。对于deck.deal(),您将获得一个存在于某处的卡片对象,并将其分配给“Card”


希望这有助于CardDeck
类维护一组卡片,可以按随机顺序进行推测

当您的代码出现问题时:

Card card = deck.deal();
它调用成员函数来检索数组中的下一张卡,并将组指针前进到下一张卡

职能部门,包括适当的评论:

public Card deal() {
        Card dealt = cards[top];    // get card from top (initially 0).
        top ++;                     // advance top so next time we get next card.
        if (top >= cards.length)    // deck empty, then reshuffle.
            reset();
        return dealt;               // give card to caller.
    }

CardDeck
类维护一个卡片数组,可以随机排列

当您的代码出现问题时:

Card card = deck.deal();
它调用成员函数来检索数组中的下一张卡,并将组指针前进到下一张卡

职能部门,包括适当的评论:

public Card deal() {
        Card dealt = cards[top];    // get card from top (initially 0).
        top ++;                     // advance top so next time we get next card.
        if (top >= cards.length)    // deck empty, then reshuffle.
            reset();
        return dealt;               // give card to caller.
    }

我猜当你调用

new CardDeck()

它正在创建
卡[]
并填充内容。由于数组中的
卡已经创建,您不需要创建新卡,只需声明对它的引用即可。

我猜当您调用

new CardDeck()

它正在创建
卡[]
并填充内容。由于数组中的
卡已创建,您不需要创建新卡,只需声明对它的引用即可。

更详细地看,函数(这是一个有根据的猜测)deck.list()或构造函数可能创建了作为deck一部分的卡,因此,这个函数将只获取已经是deckYeah一部分的卡对象。更详细地看,这个函数(这是一个有根据的猜测)deck.list()或构造函数可能创建了作为deckYeah一部分的卡,所以这个函数只获取已经是deckYeah一部分的卡对象,这很有帮助。谢谢是的,这很有帮助。谢谢