怎么比較J,Q,K,A的大小~還有四種花色怎么定義他們的大小~?。?!
按照String類型的比較規(guī)則,理論上不應(yīng)該是A<J<K<Q嗎??我們怎么定義一個(gè)新的比較規(guī)則
按照String類型的比較規(guī)則,理論上不應(yīng)該是A<J<K<Q嗎??我們怎么定義一個(gè)新的比較規(guī)則
2016-06-16
說下我的方法,建立兩個(gè)輸出循環(huán)輸出,通過值與 元素組的位置進(jìn)行比較
public String [] dianshuji={"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
//建立花色數(shù)組
public String [] huaseji={"方塊","梅花","紅桃","黑桃"};
public void addall(){// 增加整個(gè)撲克牌
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張點(diǎn)數(shù)位置
if(dianshuji[j].equals(a.dianshu)){
m=j;
}
if(dianshuji[j].equals(b.dianshu)){
n=j;
}
}
if(m>n){
return a;
}else{
return b;
}
}
}
我說一下我的辦法吧,我是在撲克牌類里定義了花色和點(diǎn)數(shù)屬性,然后再實(shí)現(xiàn)comparable接口,并實(shí)現(xiàn)compareTo方法,這是我的實(shí)現(xiàn)代碼,寫的比較麻煩,主要不想再建新類了,就一次性比完大小
public int compareTo(Cards arg0) { //重寫comparable接口中的compareTo方法
// TODO 自動(dòng)生成的方法存根
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;
}
}
}
}
用一個(gè)數(shù)組或者ArrayList(數(shù)組列表)存放,按索引比較,存放順序就是升序
舉報(bào)
2016-06-17
撲克牌類里面定義2個(gè)屬性,一個(gè)就是撲克牌的名字,2-10,JQKA,然后定義一個(gè)他們int類型的大小屬性,封裝一下,控制臺(tái)輸出的是名字,比大小的時(shí)候用大小屬性