Java程序如何判断是否已拉出数组中的对象

时间:2013-12-13 12:37:33

标签: java

作为编程项目的一部分,我正在尝试编写一个简单的Slapjack游戏(简单,因为玩家无法输掉)。我有一个卡片班,一个甲板班和一个主班。在大多数情况下一切正常,甲板洗牌,我可以处理卡等。因为它是Slapjack我需要程序知道杰克什么时候被处理,但我不知道如何实现这一点。该计划如下:

卡类

public class Card2
{
private int rank, suit;
private static String[] suits = { "hearts", "spades", "diamonds", "clubs" };
private static String[] ranks  = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King", "Ace" };

public String toString()
{
      return ranks[rank] + " of " + suits[suit];
}
public int getRank() 
{
     return rank;
}
public int getSuit()
{
    return suit;
}

Card2 (int suit, int rank)
{
    this.rank=rank;
    this.suit=suit;
}
}

甲板上课

import java.util.Random;

public class Deck2
{
private Card2[] cards;
int i;
Deck2()
{
    i=51;
    cards = new Card2[52];
    int x=0;
    for (int a=0; a<=3; a++)
    {
        for (int b=0; b<=12; b++)
         {
           cards[x] = new Card2(a,b);
           x++;
         }
    }
}

public Card2 Draw()
{
    Random generator = new Random();
    int index=0;

    do {
        index = generator.nextInt( 52 );
    } while (cards[index] == null);
    i--;
    Card2 temp = cards[index];
    cards[index]= null;
    return temp;
}

public int getTotal()
{
    return i;
}
}

主程序

public class Main2
{
public static void main(String[] args)
{
    Deck2 deck = new Deck2();

    System.out.println (deck.Draw());
}
}

2 个答案:

答案 0 :(得分:0)

首先,遵循java命名约定:使用前导小写字母命名方法。

要查看是否已绘制插孔,请保留对提取的卡片的引用:

Card card = deck.Draw();
if (card.getRank() == 9) {
    // the card drawn was a jack
}

答案 1 :(得分:0)

这听起来像是家庭作业,所以我不打算给你完整的解决方案。我会给你一个很大的暗示:getRank()没有做它应该做的事情。正如您目前编码的那样,它会返回排名的索引,而不是实际排名。

编辑:我看到单个构造函数确保正确初始化等级和套装,因此我删除了关于潜在IndexOutOfBoundsException的陈述。