Java 卡片组列表

Java 卡片组列表,java,arraylist,Java,Arraylist,我的deck类在数组中迭代时似乎遇到了问题 卡片类别: //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 (s

我的deck类在数组中迭代时似乎遇到了问题

卡片类别:

//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;

}
}
//大卫·迪耶诺
//实验室01
导入java.util.array;
公务舱卡{
私有字符串m_rank;//卡片等级:介于2和10之间的数字,或杰克、女王、国王或王牌
私人纸牌套装;//纸牌套装:S、C、H或D(黑桃、梅花、红桃或钻石)
//有用的支撑结构
私有静态字符串[]排名={“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“10”、“杰克”、“女王”、“国王”、“王牌”};
私有静态字符[]suites={C','H','D','S'};
//默认构造函数:将卡片等级设置为2,将卡片套装设置为H
公共卡(){
//将默认卡设置为2颗红心
m_秩=秩[0];
m_suit=Suits[1];
}
//存取器和变异器
公共卡(字符串等级、字符套装){
if(isvali(秩)=真){
m_秩=秩;
}
如果(IsValidSuite(套装)=真){
m_suit=西装;
}
} 
公共字符串getRank(){
系统输出打印项次(m_秩);
返回m_秩;
}
公共字符getSuit(){
System.out.println(this.suiteString());
返回m_诉讼;
}
public void setRank(字符串秩){
//确保验证提供的输入
if(isvali(秩)=真){
m_秩=秩;
}
否则{
System.out.println(“您输入的排名无效”);
}
}
公共诉讼(民事诉讼){
//确保验证提供的输入
如果(IsValidSuite(套装)=真){
m_suit=西装;
}
否则{
System.out.println(“您输入的诉讼无效”);
}
}
//方法toString–返回卡片的字符串表示形式,如下所示:
//红桃2枚,黑桃3枚,钻石杰克等。
//要求:必须使用switch语句将字符转换为字符串。
//
//提示:这张牌的等级已经是一个字符串了。所以你只需要将这张牌转换成一个字符串
//读作“梅花”、“黑桃”、“红心”或“钻石s”的字符串
公共字符串suitToString(){
开关(m_套装){
案例c:返回“俱乐部”;
案例“h”:返回“红心”;
案例“d”:返回“钻石”;
案例:返回“黑桃”;
默认:返回“红心”;
}
}
公共字符串toString(){
String data=“您的“+m_rank+”为“+this.suitToString()”;
返回数据;
}
//支持静态方法
//返回可能的牌列数组
公共静态字符串[]GetPossibleLanks(){
//System.out.println(array.toString(Ranks));
for(int i=0;i
甲板等级:

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) { /* ... */ }
}
import java.util.*;
公共类信用卡扩展卡{
私人露天甲板;
私人卡;
私有字符串[]秩=super.getPossibleLanks();
private char[]Suits=super.getPossibleSuits();
//公共信用卡{
公共甲板
deck=newarraylist();
对于(int s=0;s

为什么当我显示我的数组列表时,它不遍历套装,而是遍历列组,我仍然得到52张卡片,但都是相同的套装。

所以问题似乎是,你的
suites
数组有大写字母,但是你的
suiteString
方法使用了一个使用小写字母的switch语句。因为默认的大小写是红心,我打赌你所有的卡都是红心。

所以问题似乎是你的
Suits
数组有大写字母,但是你的
suitToString
方法使用了一个switch语句,其中使用了小写字母。因为默认的大小写是红心,我打赌你所有的卡都是红心。

所以问题似乎是你的
Suits
数组有大写字母,但是你的
suitToString
方法使用了一个switch语句,其中使用了小写字母。因为默认的大小写是红心,我打赌你所有的卡都是红心。

所以问题似乎是你的
Suits
数组有大写字母,但是你的
suitToString
方法使用了一个switch语句,其中使用了小写字母。因为默认情况下是红心,我打赌你所有的卡都是红心。

就像旁白代码一样,没有必要
==true
。只要做
if(isvalid(Rank))
如果这是你的实验工作,关键是你要学会调试。将代码分成更小的部分,分别测试每个部分。。。th