为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

正在回答

4 回答

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

0 回复 有任何疑惑可以回复我~
#1

慕粉18523865484 提问者

非常感谢!
2016-06-20 回复 有任何疑惑可以回复我~

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


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;

}

}

}


0 回复 有任何疑惑可以回复我~

我说一下我的办法吧,我是在扑克牌类里定义了花色和点数属性,然后再实现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;

}

}


}


}


0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第三季
  • 参与学习       409790    人
  • 解答问题       4340    个

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

进入课程

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信