Answer:
Here is the JAVA program:
public class Main { //class name
public static void main(String[] args) { //start of main method
//sets all boolean type variables spades, hearts diamonds and clubs to false initially
boolean spades = false;
boolean hearts = false;
boolean diamonds = false;
boolean clubs = false;
String[] deck = new String[4]; //to store card sequence
int index = 0; //to store index position
int NoOfPicks = 0; //to store number of picks (picks count)
while (!spades || !hearts || !diamonds || !clubs) { //loop starts
String card = printCard(getRandomCard()); //calls printCard method by passing getRandomCard method as argument to it to get the card
NoOfPicks++; //adds 1 to pick count
if (card.contains("Spades") && !spades) { //if that random card is a card of Spades and spades is not false
deck[index++] = card; //add that card to the index position of deck
spades = true; //sets spades to true
} else if (card.contains("Hearts") && !hearts) { //if that random card is a card of Hearts and hearts is not false
deck[index++] = card;
hearts = true; //sets hearts to true
} else if (card.contains("Diamond") && !diamonds) { //if that random card is a card of Diamond and diamonds is not false
deck[index++] = card;
diamonds = true; //sets diamonds to true
} else if (card.contains("Clubs") && !clubs) { if that random card is a card of Clubs and clubs is not false
deck[index++] = card;
clubs = true; } } //sets clubs to true
for (int i = 0; i < deck.length; i++) { //iterates through the deck i.e. card sequence array
System.out.println(deck[i]); } //prints the card number in deck
System.out.println("Number of picks: " + NoOfPicks); } //prints number of picks
public static int getRandomCard() { //gets random card
return (int) (Math.random() * 52);
} //generates random numbers of 52 range
public static String printCard(int cardNo) { //displays rank number and suit
String[] suits = { "Spades", "Hearts", "Diamonds", "Clubs", }; //array of suits
String[] rankCards = { "Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10",
"Jack", "Queen", "King" }; //array of rank
int suitNo = cardNo / 13; //divides card number by 13 and stores to suitNo
int rankNo = cardNo % 13; //takes modulo of card number and 13 and store it to rankNo
return rankCards[rankNo] + " of " + suits[suitNo]; }} //returns rankCard at rankNo index and suits at suitNo index
Explanation:
The program is explained in the comments attached with each line of code. The screenshot of the program along with its output is attached.