解决方案 »

  1.   

    看了  比较器,实在是不知道怎么把arraylist拿到比较器里去重写方法API看得不是很懂
      

  2.   

    对楼主的程序改进了一下,增加了Card类表示牌,使用TreeSet而不是ArrayList,因为TreeSet有自动排序的功能,具体如下:import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    import java.util.Scanner;
    import java.util.TreeSet;
     
    public class DouDz {
     
        public static void main(String args[]) {
        
         List<Card>  list = new ArrayList<Card>();
         list.add(new Card(1,1,"方块3"));
         list.add(new Card(1,2,"方块4"));
         list.add(new Card(1,3,"方块5"));
         list.add(new Card(1,4,"方块6"));
         list.add(new Card(1,5,"方块7"));
         list.add(new Card(1,6,"方块8"));
         list.add(new Card(1,7,"方块9"));
         list.add(new Card(1,8,"方块10"));
         list.add(new Card(1,9,"方块J"));
         list.add(new Card(1,10,"方块Q"));
         list.add(new Card(1,11,"方块K"));
         list.add(new Card(1,12,"方块A"));
         list.add(new Card(1,13,"方块2"));
        
         list.add(new Card(2,1,"梅花3"));
         list.add(new Card(2,2,"梅花4"));
         list.add(new Card(2,3,"梅花5"));
         list.add(new Card(2,4,"梅花6"));
         list.add(new Card(2,5,"梅花7"));
         list.add(new Card(2,6,"梅花8"));
         list.add(new Card(2,7,"梅花9"));
         list.add(new Card(2,8,"梅花10"));
         list.add(new Card(2,9,"梅花J"));
         list.add(new Card(2,10,"梅花Q"));
         list.add(new Card(2,11,"梅花K"));
         list.add(new Card(2,12,"梅花A"));
         list.add(new Card(2,13,"梅花2"));
        
         list.add(new Card(3,1,"红桃3"));
         list.add(new Card(3,2,"红桃4"));
         list.add(new Card(3,3,"红桃5"));
         list.add(new Card(3,4,"红桃6"));
         list.add(new Card(3,5,"红桃7"));
         list.add(new Card(3,6,"红桃8"));
         list.add(new Card(3,7,"红桃9"));
         list.add(new Card(3,8,"红桃10"));
         list.add(new Card(3,9,"红桃J"));
         list.add(new Card(3,10,"红桃Q"));
         list.add(new Card(3,11,"红桃K"));
         list.add(new Card(3,12,"红桃A"));
         list.add(new Card(3,13,"红桃2"));
        
         list.add(new Card(4,1,"黑桃3"));
         list.add(new Card(4,2,"黑桃4"));
         list.add(new Card(4,3,"黑桃5"));
         list.add(new Card(4,4,"黑桃6"));
         list.add(new Card(4,5,"黑桃7"));
         list.add(new Card(4,6,"黑桃8"));
         list.add(new Card(4,7,"黑桃9"));
         list.add(new Card(4,8,"黑桃10"));
         list.add(new Card(4,9,"黑桃J"));
         list.add(new Card(4,10,"黑桃Q"));
         list.add(new Card(4,11,"黑桃K"));
         list.add(new Card(4,12,"黑桃A"));
         list.add(new Card(4,13,"黑桃2"));
        
         list.add(new Card(5,14,"小王"));
         list.add(new Card(5,15,"大王"));
     
        
            Collections.shuffle(list);
     
           TreeSet<Card> playerFirst = new TreeSet<Card>();
           TreeSet<Card> playerSecond = new TreeSet<Card>();
           TreeSet<Card> playerThird = new TreeSet<Card>();
            
            for (int i = 3; i < list.size(); i+=3) {
     
             playerFirst.add(list.get(i));
             playerSecond.add(list.get(i+1));
             playerThird.add(list.get(i+2));
            }
        
     
            System.out.println("是否进行发牌?1(发牌)/0(结束)");
            Scanner sc = new Scanner(System.in);
            int index = sc.nextInt();
            if (index == 1) {
     
                System.out.println("玩家一的手牌");
                for (Card card : playerFirst) {
                    System.out.print(card.getDescription() + " ");
     
                }
                System.out.println();
                System.out.println("玩家二的手牌");
                for (Card card : playerSecond) {
                 System.out.print(card.getDescription() + " ");
                }
                System.out.println();
                System.out.println("玩家三的手牌");
                for (Card card : playerThird) {
                 System.out.print(card.getDescription() + " ");
                }
                System.out.println();
                System.out.println("底牌");
                System.out.println(list.get(0).getDescription() + " " + list.get(1).getDescription() + " "
                        + list.get(2).getDescription());
            }
     
        }
    }class Card implements Comparable{ private int corlor;          //1:表示方块; 2:表示梅花; 3:表示红桃; 4:表示黑桃; 
    private int point;           //点数,1-13
    private String description;  //牌的描述,如“方块2”

    public Card(int corlor, int point, String description)
    {
    this.corlor = corlor;
    this.point = point;
    this.description = description;
    }

    public int getCorlor() {
    return corlor;
    } public void setCorlor(int corlor) {
    this.corlor = corlor;
    }

    public int getPoint() {
    return point;
    } public void setPoint(int point) {
    this.point = point;
    } public String getDescription() {
    return description;
    } public void setDescription(String description) {
    this.description = description;
    } @Override
    public int compareTo(Object o) {

    Card card = (Card)o;
    if(this.point>card.point){
    return 1;
    }
    else if(this.point<card.point){
    return -1;
    }
    else{
    if(this.corlor>card.corlor)
    return 1;
    else if(this.corlor<card.corlor)
    {
    return -1;
    }

    }
    return 0;
    }

    }
      

  3.   

    import java.util.ArrayList;
    import java.util.Comparator;
    public class Pkcomparable implements Comparator<String> { @Override
    public int compare(String s1, String s2) {
    // TODO Auto-generated method stub
    ArrayList<String> shouP = new ArrayList<String>();
    for(int i=0;i<8;i++){
    shouP.add(String.valueOf(i+3));
    }
    shouP.add("J");
    shouP.add("Q");
    shouP.add("K");
    shouP.add("A");
    shouP.add("2");
    shouP.add("小王");
    shouP.add("大王");
    int a=0,b=0;
    if(s1.length()>2&&s2.length()>2){
    a=shouP.indexOf(s1.substring(2));
    b=shouP.indexOf(s2.substring(2));
    }else if(s1.equals("大王")&&s2.equals("小王")){
    a=15;
    b=14;
    }else if(s1.equals("小王")&&s2.equals("大王")){
    a=14;
    b=15;
    }else if(s1.equals("小王")&&!s2.equals("大王")){
    a=14;
    b=shouP.indexOf(s2.substring(2));
    }else if(s1.equals("大王")&&!s2.equals("小王")){
    a=15;
    b=shouP.indexOf(s2.substring(2));
    }else if(!s1.equals("大王")&&s2.equals("小王")){
    a=shouP.indexOf(s1.substring(2));
    b=14;
    }else if(!s1.equals("小王")&&s2.equals("大王")){
    a=shouP.indexOf(s1.substring(2));
    b=15;
    }
    return a-b;

    }
    }哈哈哈哈哈  比较器终于搞出来了
    终于是我自己想出来了,楼上的想法 我也借鉴了哈,烤了代码先