若应用程序的main方法中,定义字符串数组f和s:分别表示扑克牌面值和花色;定义52个元素的
Card类型数组desk,用来存放4个花色的52张牌。如下所示:
    String f[] = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
    String s[] = {"黑桃","红桃","梅花","方块"}
    Card deck = new Card[52];
类源代码如下:
public class Card{
    private String face;
    private String suit;
public Card(String f , String s) {  
 face = f ;
 suit = s ;
}
public String getFace() {
return face;
}
public String getSuit() {
return suit;
}  
public String toString() {
 
return face+"of"+suit;
}
     }
(1) 使用Card类的构造方法给deck数组的52张牌赋值,要求数组中先存放黑桃花色的A,2,3,.....,K;
    然后是红桃花色的A,2,3,.....,K;梅花花色的A,2,3,.....,K;方块花色的A,2,3,.....,K。
   请写出实现上述功能的程序段。
(2)请编写模拟洗牌的程序段,即把数组deck中的扑克牌随机打乱存放顺序。

解决方案 »

  1.   

    package com.csdn;import java.util.ArrayList;
    import java.util.List;public class RandomCard { public static void main(String[] args) {
    List<Card> list =  getnewList();
    //洗牌后的LIST
    int i=1;
    for (Card s : list) {
    System.out.println("-----"+s.toString());

    }
    }
    static List<Card> list =  getList52();
    static List<Card> listnew = new ArrayList<Card>();
    static int flag = list.size();
    //洗牌
    public static List<Card> getnewList() {
    flag--;

    String code = null;
    for(int i = 0;i<list.size();i++) {
    //随机获得一个
    int charIndex = (int) Math.floor(Math.random() * flag);
    //加入
    listnew.add(list.get(charIndex));
    //加了后去掉
    list.remove(charIndex);
    //递归
    getnewList();

    }
    return listnew;

    }

    //原来的牌
    public static List<String> getList() { List<String> list = new ArrayList<String>();
    list.add("A");
    list.add("2");
    list.add("3");
    list.add("4");
    list.add("5");
    list.add("6");
    list.add("7");
    list.add("8");
    list.add("9");
    list.add("10");
    list.add("J");
    list.add("Q");
    list.add("K");
    return list;
    }

    //原来的牌
    public static List<String> getListFlag() { List<String> list = new ArrayList<String>();
    list.add("黑");
    list.add("红");
    list.add("梅");
    list.add("方");
    return list;
    }
    //生成52张牌
    public static List<Card> getList52(){
    List<Card> list0 = new ArrayList<Card>();
    List<String> list = getListFlag();
    List<String> list1 = getList();
    for(int i = 0;i<list1.size();i++){
    for(int j =0;j<list.size();j++){
    Card dCard =new RandomCard().new Card(list1.get(i).toString(),list.get(j).toString()) ;

    list0.add(dCard);

    }
    }
    return list0;
    }
    class Card{ 
        private String face; 
        private String suit; 
    public Card(String f , String s) { 
    face = f ; 
    suit = s ; 

    public String getFace() { 
    return face; 

    public String getSuit() { 
    return suit; 

    public String toString() {  return face+"of"+suit; 

        }

    }
      

  2.   

    输出:
    -----10of梅
    -----2of红
    -----Qof红
    -----6of红
    -----7of红
    -----8of黑
    -----Qof方
    -----2of方
    -----7of方
    -----9of方
    -----9of黑
    -----Jof梅
    -----2of黑
    -----10of方
    -----6of方
    -----Aof黑
    -----Aof梅
    -----Qof黑
    -----Aof红
    -----2of梅
    -----4of方
    -----4of黑
    -----Jof方
    -----6of梅
    -----5of梅
    -----3of梅
    -----9of梅
    -----6of黑
    -----5of黑
    -----10of黑
    -----7of黑
    -----3of红
    -----4of梅
    -----9of红
    -----Qof梅
    -----7of梅
    -----10of红
    -----Jof黑
    -----Kof梅
    -----Aof方
    -----5of红
    -----Jof红
    -----Kof黑
    -----5of方
    -----Kof红
    -----3of黑
    -----8of红
    -----3of方
    -----8of方
    -----8of梅
    -----4of红
    -----Kof方
      

  3.   

    我以前在百度贴吧中回答过类似问题,当时我的程序是:
    import java.util.* ;
    class Card{
      String suit;
      String value;
      public Card(){
        suit=new String("");
        value=new String("");
      }
      public Card(String s,String v){
        suit=s;
        value=v;
      }
    }
    public class  Poker{
       public static void main(String[] args){    
         String[] f={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
         String[]s={"黑心","红心","梅花","方块"};
         Card[] deck=new Card[52];
         int k=0;
         for(int i=0;i<4;i++)
           for(int j=0;j<13;j++){
             deck[k]=new Card(s[i],f[j]);
             k++;
           }
         printCards(deck);
         dealCards(deck);
         printCards(deck);
       }   static void printCards(Card[] d){
         for(int i=0;i<52;i++){
            if(i%13==0) System.out.println("");
            System.out.print(d[i].suit+d[i].value+"  ");
         }
         System.out.println("");
       }   static void dealCards(Card[] d){
         Random rand=new Random();
         int k;
         Card temp;
         for(int i=51;i>0;i--){  //随机从前i张牌中抽出一张与第i张调换。
           k=rand.nextInt(i);
           temp=d[k];
           d[k]=d[i];
           d[i]=temp;
         }
       }
    }
      

  4.   

    public String getFace() { 
    return face; 

    public String getSuit() { 
    return suit; 

    public String toString() { return face+"of"+suit; 

    这几个方法比较简单,应该好写。