You are viewing our Forum Archives. To view or take place in current topics click here.
Find the largest card in the pack? Java help.
Posted:
Find the largest card in the pack? Java help.Posted:
Status: Offline
Joined: Jun 29, 201014Year Member
Posts: 823
Reputation Power: 34
Status: Offline
Joined: Jun 29, 201014Year Member
Posts: 823
Reputation Power: 34
Hi! So basically what I need to do is to find the largest card in a randomly generated pack of 10 cards. So say for example the program generated the following 10 cards that are then stored in an ArrayList of Card obejcts:
So currently I'm trying to write a method that will find the largest card in the pack. Each card has a numerical value of 1-13 with an Ace being 1 and a King being 13. So I want the method to loop through the ArrayList and find the cards with the highest numerical value. If 2 or more cards have the same numerical value the highest is determined by the suit of the card. With it being in the order of Spades > Hearts > Clubs > Diamonds. I have the first part of the method where it compares the numerical value but I'm stuck on comparing the suits of the cards. So far I have this:
Any help is greatly appreciated. Thanks in advance!
Four of Spades
Eight of Spades
Six of Hearts
King of Clubs
Six of Clubs
Seven of Diamonds
Ace of Clubs
King of Clubs
Seven of Diamonds
Ace of Spades
Eight of Spades
Six of Hearts
King of Clubs
Six of Clubs
Seven of Diamonds
Ace of Clubs
King of Clubs
Seven of Diamonds
Ace of Spades
So currently I'm trying to write a method that will find the largest card in the pack. Each card has a numerical value of 1-13 with an Ace being 1 and a King being 13. So I want the method to loop through the ArrayList and find the cards with the highest numerical value. If 2 or more cards have the same numerical value the highest is determined by the suit of the card. With it being in the order of Spades > Hearts > Clubs > Diamonds. I have the first part of the method where it compares the numerical value but I'm stuck on comparing the suits of the cards. So far I have this:
public Card findLargest() {
Card largest;
Card c;
for (int i = 0; i < pack.size(); i++){
if (c.getNumber() > largest.getNumber()){
largest = c
else if (c.getNumber() == largest.getNumber()){
if (largest.getSuit().equals("Diamonds"))
largest = !c
}
}
}
}
Any help is greatly appreciated. Thanks in advance!
#2. Posted:
Status: Offline
Joined: Jun 29, 201014Year Member
Posts: 823
Reputation Power: 34
Status: Offline
Joined: Jun 29, 201014Year Member
Posts: 823
Reputation Power: 34
Totally shameless self bump.
- 0useful
- 0not useful
#3. Posted:
Status: Offline
Joined: Jan 01, 201113Year Member
Posts: 1,957
Reputation Power: 401
Status: Offline
Joined: Jan 01, 201113Year Member
Posts: 1,957
Reputation Power: 401
You may need to consider setting a numerical value for each of you suit names, then check the value of the suit on the largest card against the value of the suit in the current card, whichever the larger is the new largest car.
- 0useful
- 0not useful
#4. Posted:
Status: Offline
Joined: Jun 29, 201014Year Member
Posts: 823
Reputation Power: 34
Status: Offline
Joined: Jun 29, 201014Year Member
Posts: 823
Reputation Power: 34
Imp wrote You may need to consider setting a numerical value for each of you suit names, then check the value of the suit on the largest card against the value of the suit in the current card, whichever the larger is the new largest car.
I was told by my tutor to not do it like that. Although it would be much easier and neater to do it like that.
- 0useful
- 0not useful
#5. Posted:
Status: Offline
Joined: Feb 06, 201014Year Member
Posts: 996
Reputation Power: 64
Status: Offline
Joined: Feb 06, 201014Year Member
Posts: 996
Reputation Power: 64
-Patman wroteImp wrote You may need to consider setting a numerical value for each of you suit names, then check the value of the suit on the largest card against the value of the suit in the current card, whichever the larger is the new largest car.
I was told by my tutor to not do it like that. Although it would be much easier and neater to do it like that.
I think your teacher wants the cards to be in an array so you will need to set the suit value in the array
- 0useful
- 0not useful
#6. Posted:
Status: Offline
Joined: Jun 29, 201014Year Member
Posts: 823
Reputation Power: 34
Status: Offline
Joined: Jun 29, 201014Year Member
Posts: 823
Reputation Power: 34
I have the structure of my method, it's just trying to get it to work. It should look like this:
public Card findLargest() {
Card largest;
Card c;
for (int i = 0; i < pack.size(); i++){
if (c.getNumber() > largest.getNumber()){
largest = c
else if (c.getNumber() == largest.getNumber()){
if (largest.getSuit().equals("Diamonds"))
largest = c
else if ()
else if ()
}
}
}
}
- 0useful
- 0not useful
#7. Posted:
Status: Offline
Joined: Jan 01, 201113Year Member
Posts: 1,957
Reputation Power: 401
Status: Offline
Joined: Jan 01, 201113Year Member
Posts: 1,957
Reputation Power: 401
Spades > Hearts > Clubs > Diamonds
You need to build a nested IF statement started from as you have Diamonds then follow the logic down
If this card is a diamond then its the largest else
If this card is a club and the largest card is a heart or a spade then this card is the largest else
If this card is a heart and the largest card is a spade then this card is the largest
All other conditions means that the largest card is the same as thus card
If you convert that you should get the expected results.
Sorry to be tough and not give you exact code, but it is the best way to learn
You need to build a nested IF statement started from as you have Diamonds then follow the logic down
If this card is a diamond then its the largest else
If this card is a club and the largest card is a heart or a spade then this card is the largest else
If this card is a heart and the largest card is a spade then this card is the largest
All other conditions means that the largest card is the same as thus card
If you convert that you should get the expected results.
Sorry to be tough and not give you exact code, but it is the best way to learn
- 1useful
- 0not useful
#8. Posted:
Status: Offline
Joined: Jun 29, 201014Year Member
Posts: 823
Reputation Power: 34
Status: Offline
Joined: Jun 29, 201014Year Member
Posts: 823
Reputation Power: 34
Imp wrote Spades > Hearts > Clubs > Diamonds
You need to build a nested IF statement started from as you have Diamonds then follow the logic down
If this card is a diamond then its the largest else
If this card is a club and the largest card is a heart or a spade then this card is the largest else
If this card is a heart and the largest card is a spade then this card is the largest
All other conditions means that the largest card is the same as thus card
If you convert that you should get the expected results.
Sorry to be tough and not give you exact code, but it is the best way to learn
No that's fine, I'd much rather it that way.
- 0useful
- 0not useful
#9. Posted:
Status: Offline
Joined: Jun 29, 201014Year Member
Posts: 823
Reputation Power: 34
Status: Offline
Joined: Jun 29, 201014Year Member
Posts: 823
Reputation Power: 34
Is it along these lines or have I done this completely wrong?
public Card findLargest(){
Card largest;
Card c;
for (int i = 0; i < pack.size(); i++){
if (c.getNumber() > largest.getNumber()){
largest = c;
else if (c.getNumber() == largest.getNumber()){
if (largest.getSuit().equals("Diamonds"))
largest = c;
else if (largest.getSuit().equals("Clubs") && c.getSuit().equals("Hearts" || "Spades"))
largest = c;
else if (largest.getSuit().equals("Hearts")) && c.getSuit().equals("Spades")
largest = c;
}
}
}
}
- 0useful
- 0not useful
#10. Posted:
Status: Offline
Joined: Jan 01, 201113Year Member
Posts: 1,957
Reputation Power: 401
Status: Offline
Joined: Jan 01, 201113Year Member
Posts: 1,957
Reputation Power: 401
-Patman wrote Is it along these lines or have I done this completely wrong?
public Card findLargest(){
Card largest;
Card c;
for (int i = 0; i < pack.size(); i++){
if (c.getNumber() > largest.getNumber()){
largest = c;
else if (c.getNumber() == largest.getNumber()){
if (largest.getSuit().equals("Diamonds"))
largest = c;
else if (largest.getSuit().equals("Clubs") && c.getSuit().equals("Hearts" || "Spades"))
largest = c;
else if (largest.getSuit().equals("Hearts")) && c.getSuit().equals("Spades")
largest = c;
}
}
}
}
Right just looking at the code, the idea is right, but what you have done is checked the largest card suit, swap all the "largest" with "c" and visa versa. But only in the If statements checking suits, including your "diamond" check
you need to be checking the current card suit and seeing if it is better than the current largest suit ;)
- 0useful
- 0not useful
You are viewing our Forum Archives. To view or take place in current topics click here.