I am writing a homework assignment that creates a full deck of 52 cards. I am having a slight problem at line 18.
hearts[x].setSuit("Hearts");
Here is the rest of the code:
public class FullDeck 
{
public static void main(String[] args)
{
    //Creates four arrays for each deck
    Card[] hearts = new Card[13];
    Card[] clubs = new Card[13];
    Card[] spades = new Card[13];
    Card[] diamonds = new Card[13];
    //Fills the hearts deck
    for(int x = 0; x < hearts.length; ++x)
    {
        hearts[x].setSuit("Hearts");
        hearts[x].setValue(x+1);
        System.out.println("The " + hearts[x].getRank() + " of " + hearts[x].getSuit());
    }
 }
}
The client class for the Card type:
public class Card
{
private String suit;
private int value;
private String rank;
public String getSuit()
{
  return suit;
}
public int getValue()
{
  return value;
}
public String getRank()
{
  return rank;
}
public void setSuit(String s)
{
  suit = s;
}
public void setValue(int v)
{
  final int LOW = 1;
  final int HIGH = 13;
  if(v >= LOW && v <= HIGH)
     value = v;
   else
     value = LOW;
  if(value == 1)
    rank = "Ace";
  else
    if(value == 11)
      rank ="Jack";
    else
      if(value == 12)
         rank = "Queen";
      else
         if(value == 13)
           rank = "King";
         else
           rank = Integer.toString(value);
 }  
} 
If I could have a detailed explanation please as to what exactly is going wrong would be very appreciated :). I'm new to coding in java as well so any tips from veterans out there will be kindly noted, thank you!
