時間限制: 1Sec 記憶體限制: 128MB
題目描述:(原題鏈接)
撲克牌排序:構造撲克牌陣列,對撲克牌進行排序,排序原則如下:數字從小到大是2-10、J、Q、K和A,花色從小到大是方塊(diamond)、梅花(club)、紅桃(heart)、黑桃(spade),兩張牌比較時先看數字,數字相同時看花色,要求對輸入的撲克牌進行從小到大排序,
輸入五張牌(表示黑桃2、紅桃3、黑桃3、方塊A和梅花J): 2 s 3 h 3 s A d J c
輸出結果應為:2 s 3 h 3 s J c A d陣列長度固定為5,
輸入:
輸入五張牌(表示黑桃2、紅桃3、黑桃3、方塊A和梅花J): 2s3h3sAdJc
樣例輸入:
無
輸出:
輸出結果應為:2s 3h 3s Jc Ad陣列長度固定為5,
樣例輸出 :
無
解題思路:
構造物件,重寫排序方法,格式化輸出
注意事項:
注意牌面的大小的字符、牌面的花色的優先級處理
參考代碼:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class Main implements Comparable<Object> {
int num; //表示牌面值的優先級: 2/3/4/5/6/7/8/9/10/11/12/13/14
String zhi; //表示牌面原本的值: 2/3/4/5/6/7/8/9/10/J/Q/K/A
int color; //表示牌面花色的優先級: 0/1/2/3
char se; //表示牌面花色原本的值: d/c/h/s
Main(String num,char color){ //構造并重新設定花色優先級、牌面優先級
this.se=color;this.zhi=num;
if(color=='d')this.color=0;
if(color=='c')this.color=1;
if(color=='h')this.color=2;
if(color=='s')this.color=3;
if(num.equals("J"))this.num=11;
else if(num.equals("Q"))this.num=12;
else if(num.equals("K"))this.num=13;
else if(num.equals("A"))this.num=14;
else this.num=Integer.parseInt(num);
}
public int compareTo(Object o) {
int flag=-1;
Main o1=(Main)o;
if(this.num>o1.num) //先比較數值優先級
flag=1;
else if(this.num==o1.num) { //再比較花色優先級
if(this.color>o1.color)
flag=1;
else
flag=-1;
}
return flag;
}
public String toString() {
return this.zhi+this.se; //輸出格式
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s =in.next();
ArrayList<Main> arr =new ArrayList<Main>();
int i=0;
while(i<s.length()) { //控制當i=length時停止輸入
if(s.charAt(i)>='2'&&s.charAt(i)<='9')
{arr.add(new Main(""+s.charAt(i),s.charAt(i+1)));i=i+2;}
else if(s.charAt(i)=='J')
{arr.add(new Main("J", s.charAt(i+1)));i=i+2;}
else if(s.charAt(i)=='Q')
{arr.add(new Main("Q", s.charAt(i+1)));i=i+2;}
else if(s.charAt(i)=='K')
{arr.add(new Main("K", s.charAt(i+1)));i+=2;}
else if(s.charAt(i)=='A')
{arr.add(new Main("A", s.charAt(i+1)));i+=2;}
else //此時為牌面為10
{arr.add(new Main("10",s.charAt(i+2)));i+=3;}
}
Collections.sort(arr);
for(Main e:arr)
System.out.print(e+" ");
in.close();
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/266007.html
標籤:其他
上一篇:什么是3D模型?學習3D游戲建模都需要掌握什么工具?
下一篇:Java之簡易版飛機大戰
