问答详情
源自:7-1 简易扑克牌游戏

怎么比较J,Q,K,A的大小~还有四种花色怎么定义他们的大小~!!!

按照String类型的比较规则,理论上不应该是A<J<K<Q吗??我们怎么定义一个新的比较规则

提问者:慕粉18523865484 2016-06-16 18:13

个回答

  • 慕丝6072450
    2016-06-17 15:29:43
    已采纳

    扑克牌类里面定义2个属性,一个就是扑克牌的名字,2-10,JQKA,然后定义一个他们int类型的大小属性,封装一下,控制台输出的是名字,比大小的时候用大小属性

  • qq_奔三了_03545151
    2016-07-06 10:25:14

    说下我的方法,建立两个输出循环输出,通过值与 元素组的位置进行比较


    public String [] dianshuji={"2","3","4","5","6","7","8","9","10","J","Q","K","A"};

    //建立花色数组

    public String [] huaseji={"方块","梅花","红桃","黑桃"};

    public void addall(){// 增加整个扑克牌

    for(int i=0;i<huaseji.length;i++){

    for(int j=0;j<dianshuji.length;j++){

    puke cr1=new puke(huaseji[i],dianshuji[j]);

    pukelist.add(cr1);

    }

    }

    System.out.println("--------------扑克拆包成功:-----------");

    System.out.println("目前所有扑克牌为:");

    System.out.println(pukelist);

    System.out.println("");

    }

    public puke bijiaopai(puke a,puke b){

    //比较大小

    int m=0;

    int n=0;

    if(a.dianshu.equals(b.dianshu)){

    for(int i=0;i<4;i++){//此处为比较四种花色位置

    if(huaseji[i].equals(a.huase)){

    m=i;

    }

    if(huaseji[i].equals(b.huase)){

    n=i;

    }

    }

    if(m>n) {

    return a;

    }else {


    return b;

    }

    }else{

    for(int j=0;j<13;j++){//此处为比较13张点数位置

    if(dianshuji[j].equals(a.dianshu)){

    m=j;

    }

    if(dianshuji[j].equals(b.dianshu)){

    n=j;

    }

    }

    if(m>n){

    return a;

    }else{

    return b;

    }

    }

    }


  • qq_我有我的范儿_0
    2016-07-01 17:01:50

    我说一下我的办法吧,我是在扑克牌类里定义了花色和点数属性,然后再实现comparable接口,并实现compareTo方法,这是我的实现代码,写的比较麻烦,主要不想再建新类了,就一次性比完大小

    public int compareTo(Cards arg0) { //重写comparable接口中的compareTo方法

    // TODO 自动生成的方法存根

    String str="234567891JQKA";

    List<String> type=new ArrayList<String>();

    String str1[]={"黑桃","红桃","梅花","方片"};

    type.addAll(Arrays.asList(str1));

    if(this.getCardsNumber().equals("10")){

    int b=str.indexOf(arg0.getCardsNumber());

    if(b<8)

    return 1;

    else if(b>8)

    return -1;

    else {

    int x=type.indexOf(this.getCardsType());

    int y=type.indexOf(arg0.getCardsType());

    if(x<y)

    return 1;

    else if(x>y)

    return -1;

    else 

    return 0;

    }

     

    }

    else if(arg0.getCardsNumber().equals("10")){

    int a=str.indexOf(this.getCardsNumber());

    if(a>8)

    return 1;

    else if(a<8)

    return -1;

    else {

    int x=type.indexOf(this.getCardsType());

    int y=type.indexOf(arg0.getCardsType());

    if(x<y)

    return 1;

    else if(x>y)

    return -1;

    else 

    return 0;

    }

    }

    else{

    int a=str.indexOf(this.getCardsNumber());

    int b=str.indexOf(arg0.getCardsNumber());

    if(a>b)

    return 1;

    else if(a<b)

    return -1;

    else {

    int x=type.indexOf(this.getCardsType());

    int y=type.indexOf(arg0.getCardsType());

    if(x<y)

    return 1;

    else if(x>y)

    return -1;

    else 

    return 0;

    }

    }


    }


    }


  • ixenos
    2016-06-17 16:36:35

    用一个数组或者ArrayList(数组列表)存放,按索引比较,存放顺序就是升序