陈旺


私信TA

用户名:cw0824ly

访问量:9768

签 名:

等  级
排  名 122
经  验 7553
参赛次数 2
文章发表 61
年  龄 18
在职情况 学生
学  校 湖北生物科技职业学院
专  业

  自我简介:



参考代码:

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 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区