Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

You are going to write a program that implements a sorted list using dynamic all

ID: 3715056 • Letter: Y

Question

You are going to write a program that implements a sorted list using dynamic allocated arrays.

DataFile.txt contains the information of poker cards.

1. C: clubs (lowest) , D: diamonds, H: hearts, S: spades (highest)

2. 2 (lowest), 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K, A

3. No Joker cards

4. Any C cards are lower than any D cards.

DataFile Content (You can write the file specification into your program.):

For examples, DJ means J of Diamonds; H7 means 7 of hearts.

Your job

1. Create a list by dynamic allocated array and set the size to 20

2. Read the first 20 cards in the first line of the file, the put them one by one into the list by implementing and using putItem(). The list must be kept sorted in ascending order.

Then output all the cards in the list in one line separating by commas.

3.Then delete the cards indicated in the second line of the file by using deleteItem()

Then output all the cards in the list in one line separating by commas.

4. Then put the items in the third line in to the list. Must use putItem()

Then output all the cards in the list in one line separating by commas.

5. Search the current list for the elements in the list. Then output the result as the follows. Yes or No depends on whether the card exists in the current list. Must implement and use getItem()

C9 NO, C10 YES

6. A printAll() function should be defined and called in order to output all the contents in the list.

7. A compareTo() function must be defined and used to compare which card is greater, less, or equal.

Explanation / Answer

Code :
Card.java

public class Card<T> implements Comparable<T> {

private String faceValue;

private int cardType;

private String[] cardOrder = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A" };

@Override

public String toString() {

return "Card [faceValue=" + faceValue + ", cardType=" + cardType + "]";

}

public String getFaceValue() {

return faceValue;

}

public void setFaceValue(String faceValue) {

this.faceValue = faceValue;

}

public int getCardType() {

return cardType;

}

public void setCardType(int cardType) {

this.cardType = cardType;

}

public Card(String faceValue) {

super();

if (faceValue.charAt(0) == 'C') {

this.cardType = 0;

} else if (faceValue.charAt(0) == 'D') {

this.cardType = 1;

} else if (faceValue.charAt(0) == 'H') {

this.cardType = 2;

} else if (faceValue.charAt(0) == 'S') {

this.cardType = 3;

}

this.faceValue = faceValue;

}

@Override

public int compareTo(T o) {

Card card = (Card) o;

if (card.cardType < this.cardType) {

return 1;

} else if (card.cardType > this.cardType) {

return -1;

} else {

String cardValue = card.faceValue.substring(1, card.faceValue.length());

String currentValue = this.faceValue.substring(1, this.faceValue.length());

int cardValueOrder = 0, currentValueOrder = 0;

for(int i=0; i < cardOrder.length; i++) {

if(cardOrder[i].equals(cardValue)) {

cardValueOrder = i;

}

if(cardOrder[i].equals(currentValue)){

currentValueOrder = i;

}

}

if(cardValueOrder < currentValueOrder) {

return 1;

} else {

return -1;

}

}

}

}

PokerRead.java - to read the data from file as expected and returns in 2 dimensional array

import java.io.BufferedReader;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.IOException;

public class PokerRead {

String[][] readDataFromFile(String fileName) {

String[][] cards = new String[4][20];

try {

FileReader fileIs = new FileReader(fileName);

BufferedReader objIs = new BufferedReader(fileIs);

String line;

int i = 0;

while ((line = objIs.readLine()) != null) {

cards[i] = line.split(",");

i++;

}

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return cards;

}

}

PokerMain.java - where we can start the program, putItem and deleteItems are not separately implemented, you can separete them out in this file once you understand the logic.

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

public class PokerMain {

public static void main(String arg[]) {

String[][] cards = new String[4][20];

PokerRead pr = new PokerRead();

PokerMain pm = new PokerMain();

cards = pr.readDataFromFile("src/DataFile.txt");

int count = 0;

List<Card> cardsList = new ArrayList<>();

for (int i = 0; i < 20; i++) {

cardsList.add(new Card<>(cards[0][i]));

}

// for (Card card : cardsList) {

// System.out.println(card);

// }

Collections.sort(cardsList);

pm.printAll(cardsList);

List<Card> toBeRemoved = new ArrayList<>();

for (int i = 0; i < cards[1].length; i++) {

for (Card card : cardsList) {

if (card.getFaceValue().equals(cards[1][i])) {

toBeRemoved.add(card);

}

}

}

cardsList.removeAll(toBeRemoved);

pm.printAll(cardsList);

for (int i = 0; i < cards[2].length; i++) {

cardsList.add(new Card(cards[2][i]));

}

Collections.sort(cardsList);

pm.printAll(cardsList);

for (int i = 0; i < cards[3].length; i++) {

boolean found = false;

for (Card card : cardsList) {

if (card.getFaceValue().equals(cards[3][i])) {

found = true;

}

}

if(found) {

System.out.print(cards[3][i] + " YES");

} else {

System.out.print(cards[3][i] + " NO");

}

if((i + 1) != cards[3].length) {

System.out.print(",");

}

}

}

void printAll(List<Card> cards) {

for (int i = 0; i < cards.size(); i++) {

System.out.print(cards.get(i).getFaceValue());

if ((i + 1) != cards.size()) {

System.out.print(",");

}

}

System.out.println("");

}

}

DataFile.txt

H4,C8,HJ,C9,D10,D5,DK,D2,S7,DJ,H3,H6,S10,HK,DQ,C2,CJ,C4,CQ,D8,C3,SA,S2,HQ,S8,C6,D9,S3,SQ,C5,S4,H5,SJ,D3,H8,CK,S6,D7,S9,H2,CA,C7,H7,DA,D4,H9,D6,HA,H10,S5,C10
H4,D5,HK,D2
H4,HK,SK
C9,C10

Output :

C2,C4,C8,C9,CJ,CQ,D2,D5,D8,D10,DJ,DQ,DK,H3,H4,H6,HJ,HK,S7,S10
C2,C4,C8,C9,CJ,CQ,D8,D10,DJ,DQ,DK,H3,H6,HJ,S7,S10
C2,C4,C8,C9,CJ,CQ,D8,D10,DJ,DQ,DK,H3,H4,H6,HJ,HK,S7,S10,SK
C9 YES,C10 NO

All the best.

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote