You have specified that cardDeck is a Card, but you have not instantiated it to anything. Each offset in cardDeck is therefore a null, so you'll be pulling up a NullPointerException on this line:
cardDeck[x].setSuit(suit);. You need to invoke a
new Card() first and write it to cardDeck[x].
I don't like the iteration's either. Consider using two of simply numFaces and numSuits (13 and 4 in a standard deck ignoring joker). So I'd suggest 2 loops nested of the number of faces and suits, and then keep a separate incremented variable for adding. I'd also suggest adding two constructors to card, one default and one that accepts the face and the suit. Chain them together.
Is this for an assignment? If not, I'd also suggest using enums and collections. Any collection will do, but if you treat the deck as a stack or queue, I'd suggest a linkedlist or subclass of such (using deque interface) would be a good idea. Collections also have an added benefit of the shuffle method.