参考代码:
import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.Map; import java.util.Scanner; class pkp { String name; char type; } public class 扑克牌排序 { /** * @param args */ static Map<Character, Integer> map = new HashMap<Character, Integer>(); public static void main(String[] args) { // TODO Auto-generated method stub /* * 题目 1975: [蓝桥杯][算法提高VIP]扑克排序 时间限制: 1Sec 内存限制: 128MB 提交: 204 解决: 99 * 题目描述 * 扑克牌排序:构造扑克牌数组,对扑克牌进行排序。排序原则如下:数字从小到大是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。 */ Scanner scanner = new Scanner(System.in); ArrayList<pkp> arrayList1 = new ArrayList<pkp>();// 数字 ArrayList<pkp> arrayList2 = new ArrayList<pkp>();// 字母 map.put('d', 1); map.put('c', 2); map.put('h', 3); map.put('s', 4); map.put('J', 11); map.put('Q', 12); map.put('K', 13); map.put('A', 14); String s = scanner.nextLine(); int i = 0, j = 0; while (j < s.length()) { pkp pk = new pkp(); if (s.charAt(j) == '1') { pk.name = "1"+s.charAt(j + 1); pk.type = s.charAt(j + 2); j += 3; } else { pk.name = ""+s.charAt(j); pk.type = s.charAt(j + 1); j += 2; } if (pk.name.matches("[0-9]+")) { arrayList1.add(pk); } else { arrayList2.add(pk); } } Collections.sort(arrayList1, new Comparator<pkp>() { @Override public int compare(pkp arg0, pkp arg1) { // TODO Auto-generated method stub if (!arg0.name.equals(arg1.name)) { // 如果两个都是数字 那么就比较大小 return Integer.parseInt(arg0.name) > Integer .parseInt(arg1.name) ? 1 : -1; } else { return map.get(arg0.type) > map.get(arg1.type) ? 1 : -1; } } }); Collections.sort(arrayList2, new Comparator<pkp>() { @Override public int compare(pkp arg0, pkp arg1) { // TODO Auto-generated method stub if (!arg0.name.equals(arg1.name)) { // 如果两个都是数字 那么就比较大小 return map.get(arg0.name.charAt(0)) > map.get(arg1.name .charAt(0)) ? 1 : -1; } else { return map.get(arg0.type) > map.get(arg1.type) ? 1 : -1; } } }); for (pkp a : arrayList1) { System.out.print(a.name + a.type + " "); } for (pkp a : arrayList2) { System.out.print(a.name + a.type + " "); } } }
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题6.7 (C语言代码)浏览:807 |
C二级辅导-进制转换 (C语言代码)浏览:551 |
C语言程序设计教程(第三版)课后习题8.2 (Java代码)浏览:2287 |
回文数(一) (C语言代码)浏览:809 |
用筛法求之N内的素数。 (C语言代码)浏览:1386 |
【蟠桃记】 (C语言代码)浏览:698 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:769 |
【明明的随机数】 (C语言代码)浏览:845 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:755 |
C二级辅导-公约公倍 (C语言代码)浏览:537 |