我的甲板类遍历Suits数组似乎有问题。

卡类:

//David Diienno
//Lab 01
import java.util.Arrays;
public class Card {

private String m_rank; // card rank: a number between 2 and 10, or        Jack, Queen, King or Ace

private char m_suit; // card suit: S, C, H, or D (spades, clubs, hearts, or diamonds)
// Helpful supporting structures

private static String [] Ranks = {"2","3","4","5","6","7","8","9","10", "Jack", "Queen", "King", "Ace"};

private static char [] Suits = {'C','H','D','S'};
// Default constructor: sets card rank to 2 and card suit to H

public Card(){
    //setting default card to a 2 of hearts
    m_rank = Ranks[0];

    m_suit = Suits[1];

}
// Accessors and Mutators
public Card(String Rank, char suit){
    if(isValidRank(Rank) == true){
        m_rank = Rank;

    }
    if(isValidSuit(suit) == true){
        m_suit = suit;
    }

}

public String getRank() {
    System.out.println(m_rank);
    return m_rank;
}

public char getSuit() {
    System.out.println(this.suitToString());
    return m_suit;
}

public void setRank(String rank) {
    // Make sure to validate provided input
    if (isValidRank(rank) == true){
        m_rank = rank;
    }
    else{
        System.out.println("The rank you entered is invalid");
    }

}

public void setSuit(char suit) {
    // Make sure to validate provided input
    if(isValidSuit(suit) == true){
        m_suit = suit;
    }
    else{
        System.out.println("The suit you entered is invalid");
    }

}
// Method toString – returns string representation of the card that looks as follows:
// 2 of Hearts, 3 of Spades, Jack of Diamonds, etc.
// Requirement: you must use switch statement to convert character to string.
//
// Hint: card’s rank is already a string. Therefore you only need to convert card suit into
// a string that reads “Clubs”, “Spades”, “Hearts” or “Diamond  s”
public String suitToString(){
    switch(m_suit){

        case 'c': return "Clubs";

        case 'h': return "Hearts";

        case 'd': return "Diamonds";

        case 's': return "Spades";
        default: return "Hearts";

    }
}

public String toString() {

    String data = "You have a " + m_rank + " of " + this.suitToString();
    return data;

}
// Supporting static methods
// Returns an array of possible card ranks

public static String [ ] getPossibleRanks() {

    //System.out.println(Arrays.toString(Ranks));
    for(int i = 0; i < Card.Ranks.length; i ++){
        System.out.println(Ranks[i]);

    }
    return Ranks;
}

// Returns an array of possible card suits
public static char [ ] getPossibleSuits() {
    for(int i = 0; i < Card.Suits.length;i++){

        System.out.println(Suits[i]);

    }
    return Suits;
}

public boolean isValidRank (String r){
    for(int i = 0; i < Card.Ranks.length; i++ ){
        if(Card.Ranks[i].equals( r)){
            return true;

        }

    }
    return false;

}

public boolean isValidSuit (char s){
    for (int i = 0; i < Card.Suits.length; i++){

        if(Card.Suits[i] == s){

            return true ;
        }

    }

    return false;

}
}


甲板等级:

import java.util.*;
public class DeckOfCards extends Card {
private ArrayList <Card> deck;
private Card card;
private  String [] Ranks = super.getPossibleRanks();
private  char [] Suits = super.getPossibleSuits();

// public void resetDeckOfCards() {

public DeckOfCards()
    deck = new ArrayList<Card>();
    for(int s = 0; s < Suits.length; s++)
    {
        for(int r = 0; r < Ranks.length; r++){
            card = new Card(Ranks[r],Suits[s]);
            deck.add(card);
        }

    }

}
public void display(){
    System.out.println(deck);

}
//public Card getCard() { /* ... */ }
//Remove a random card from the Array List of cards and return its value from this method Notes:
//1. Ensure that there is at least one card in the ArrayList of Cards
//2. If there are no more cards left in the ArrayList of Cards, reset the Deck of Cards
//3. Use class Random to create a random number which will be an index into ArrayList of Cards
//4. Remove and return card stored in the ArrayList of Cards in the randomly created index
// Return an ArrayList of specified size (i.e. returned cards are being removed from the deck). //
// Notes:
// 1. Use method getCard() to retrieve a single card
// 2. Validate the value of size passed into this method and return     null if size is invalid
//public ArrayList<Card> getHand(int size) { /* ... */ }
}


为什么当我显示我的数组列表时,它不会遍历花色,但会遍历行列,我仍然可以得到52张卡片,但都穿着相同的花色。

最佳答案

因此,问题似乎在于您的Suits数组具有大写字母,但是您的suitToString方法使用的是switch语句,其中使用了小写字母。由于默认情况是Hearts,因此我敢打赌您所有的牌都是Hearts。

关于java - 卡片组ArrayList,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28306351/

10-13 06:29