慕粉18523865484
2016-06-16 18:13
按照String类型的比较规则,理论上不应该是A<J<K<Q吗??我们怎么定义一个新的比较规则
扑克牌类里面定义2个属性,一个就是扑克牌的名字,2-10,JQKA,然后定义一个他们int类型的大小属性,封装一下,控制台输出的是名字,比大小的时候用大小属性
说下我的方法,建立两个输出循环输出,通过值与 元素组的位置进行比较
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;
}
}
}
我说一下我的办法吧,我是在扑克牌类里定义了花色和点数属性,然后再实现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;
}
}
}
}
用一个数组或者ArrayList(数组列表)存放,按索引比较,存放顺序就是升序
Java入门第三季
409792 学习 · 4340 问题
相似问题