使用类的名称声明一个Object

时间:2017-06-14 01:45:42

标签: java arrays arraylist

    int sum = 0;
    for (int i = 0; i < 5; i++) {
        Card c = deck.deal();
        System.out.println("Got card " + c.getName());
        sum += c.getValue();
    }

我不明白行Card c = deck.deal();。 卡片是一个不同的类,卡片是main()中的一个对象,deal()属于不同的类。

import java.util.Random;

public class Deck {

    int Cnumb;
    int Cname;
    String cardName[] = new String[5];
    int cardNum[] = new int[14];


    public void init(){
        cardName[0] = "";
        cardName[1] = "Heart's";
        cardName[2] = "Diamond's";
        cardName[3] = "Spade's";
        cardName[4] = "Club's";

        cardNum[0] = 0;
        cardNum[1] = 1;
        cardNum[2] =2;
        cardNum[3] =3;
        cardNum[4] =4;
        cardNum[5] =5;  
        cardNum[6] =6;
        cardNum[7] =7;
        cardNum[8] =8;
        cardNum[9] =9;
        cardNum[10] =10;
        cardNum[11] =11;
        cardNum[12] =12;
        cardNum[13] =13;

    }

    public void shuffle(){

        Random rnd = new Random();


        // Random Card
        Cnumb = rnd.nextInt(Integer.MAX_VALUE) % 13;
        Cnumb = Cnumb + 1;

        Cname = rnd.nextInt(Integer.MAX_VALUE) % 4;
        Cname = Cname + 1;

    }

      public Card deal(){
        String Suit =  cardName[Cname];
        int Rank = cardNum[Cnumb];
        //return ; // here is the problem       
    }

}

2 个答案:

答案 0 :(得分:0)

卡片是一个课程,你是对的。这行代码返回一个卡片对象:

deck.deal();

Deck是另一个包含所有卡片的类,它包含一个名为deal的方法,可以返回一张卡片。

修改:您遇到两个问题,您的方法deal()会被写入以返回卡片object,但您已将卡片声明为{{1} } array。它会导致错误。

答案 1 :(得分:0)

似乎Card类中的方法返回了类Deck,该类称为deal。我们无法确切地看到你所要求的东西,但这是对正在发生的事情的基本解释。

如果您想了解有关面向对象编程如何工作的更多信息,请参阅Brian Will的优秀教程:YouTube Video