算法提高 12-2扑克排序

问题描述
  扑克牌排序:构造扑克牌数组,对扑克牌进行排序。排序原则如下:数字从小到大是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。
样例输出
与上面的样例输入对应的输出。
例:
数据规模和约定
  输入数据中每一个数的范围。
 1 import java.util.ArrayList;
 2 import java.util.Scanner;
 3 
 4 import java.util.*;
 5 import java.lang.Math;
 6 class Main {
 7     public static void main(String[] args) {
 8         Scanner input = new Scanner(System.in);
 9         String s = input.next();
10         String[] s1 = s.split("d|c|h|s");
11         A[] a = new A[s1.length];
12         for(int i=0;i<s1.length;i++){
13             a[i] = new A();
14             a[i].data1 = s1[i];
15             if(s1[i].equals("10")){
16                 a[i].data = "91";
17             }
18             if(s1[i].equals("J")){
19                 a[i].data = "92";
20                 continue;
21             }else if(s1[i].equals("Q")){
22                 a[i].data = "93";
23                 continue;
24             }
25             else if(s1[i].equals("K")){
26                 a[i].data = "94";
27                 continue;
28             }else if(s1[i].equals("A")){
29                 a[i].data = "95";
30                 continue;
31             }
32             a[i].data = s1[i];
33         }
34         List<A> list = new ArrayList<>();
35         int h = 0;
36         for(int i=0;i<s.length();i++){
37             if(s.charAt(i)=='d'){
38                 a[h].color = 1;
39                 a[h].color1 = "d";
40                 list.add(a[h++]);
41             }else if(s.charAt(i)=='c'){
42                 a[h].color = 2;
43                 a[h].color1 = "c";
44                 list.add(a[h++]);
45             }else if(s.charAt(i)=='h'){
46                 a[h].color = 3;
47                 a[h].color1 = "h";
48                 list.add(a[h++]);
49             }else if(s.charAt(i)=='s'){
50                 a[h].color = 4;
51                 a[h].color1 = "s";
52                 list.add(a[h++]);
53             }
54             
55         }
56         Collections.sort(list);
57         for(A b:list){
58             System.out.print(b.data1+b.color1+" ");
59         }
60     }
61     
62 }
63 class A implements Comparable<A>{
64     String data;
65     String data1;
66     String color1;
67     int color;
68     @Override
69     public int compareTo(A o) {
70         // TODO Auto-generated method stub
71         if(data.equals(o.data)){
72             return color-o.color;
73         }else{
74             return data.compareTo(o.data);
75         }
76     }
77 }

 

posted @ 2017-04-02 02:31  来一点音乐  阅读(991)  评论(0编辑  收藏  举报