需要扫描另一个类中的数组对象

时间:2012-11-11 01:14:05

标签: java class

我的牌组创建了一个Card对象数组,并成功打印出它已更新。我想制作第三个类来实现该程序:创建一个deck对象,向玩家询问他们想要多少张牌,然后随机传递出来。在底部的PlayingTable类中,我尝试创建一个甲板的实例并扫描它以使甲板中的所有信息都存在。它说我不能扫描一个甲板对象,因为它不是一个阵列,我不太确定从这里去哪里....

这是我的两个类的代码:

公共类卡

{

    //Instance properties//
    private String cardNum; 
    private String cardSuit;

    //Instance Methods // 
    //Constructor, create an instance of card
    public Card( String num , String suit ) 
    {
        System.out.println( "Creating a card.");
        cardNum = num ;
        cardSuit = suit;    
    }       
     public void display()
     { 
    System.out.println("This card is a" + " "+ cardNum + cardSuit);
    }

}

公共课甲板

{      //实例属性//

 //Number of cards in a deck
 public static int numCards = 52; 
 private static Card [ ] deck= new Card [numCards];
 private static String [ ] cardValue = { "Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King" } ;
 private static String [ ] cardSuit = { " of Hearts" , " of Spades", " of Clubs", " of Diamonds" };

 //Instance methods and Constructor//
 /*public void Deck ( )
 {


 }*/

 public static void fillDeck ( )
 {

    int eachCard = 0 ;

    for ( int i = 0; i < cardValue.length ; i++ )
    {
     for ( int j = 0 ; j < cardSuit.length ; j++ )
        {

         deck[eachCard++] = new Card ( cardValue [i] , cardSuit [j] );

        }
     } 
 }

public static void getDeck ()
{
    for ( int i = 0; i < numCards ; i++ )
   {
    fillDeck();
    //System.out.println( " This is card" + i + " " + " of the deck" );
    deck[i].display();
    }
}   
public static void main (String [] args ) 
{ 
    getDeck();
}

}

公共课PlayTable {         static Deck dealersDeck = new Deck();

    public static void main ( String [] args )
    {  

        for ( int i = 0 ; i < 52; i++)
        {
              System.out.println ( dealersDeck[i].getDeck());
        }

    }

}

2 个答案:

答案 0 :(得分:0)

问:我如何在一个班级中显示信息...... [来自] ...另一个班级?

答:在“其他类”中提供公共“getter”方法(或者,如果您正在编程#,“属性”)。

这是一个关于C#属性的好教程:

关于Java“getter / setter”方法的讨论:

最后,这里是关于OO“封装”的讨论,这个问题实际上超越了“属性”,“getter / setter方法”...... AND ......“在一个类中显示信息另一个“:

答案 1 :(得分:0)

您创建一个数组,该数组将持有初始化为numCards -1

大小的Card对象
private static Card [ ] deck = new Card [numCards-1];

但你永远不会在其中放置任何物品,所以当你打电话时

deck[i].display();

你在不存在的东西上调用显示方法,你有一个方法可以填充数组(makeDeck()),但你永远不会调用它。

在实体类文件中包含main()可能很方便,但也可以掩盖代码中的错误。我建议你在一个单独的课程中进行测试。