题目描述 自定义结构体表示一张扑克牌,包含类型——黑桃、红桃、梅花、方块、王;大小——2,3,4,5,6,7,8,9,10,J,Q,K,A,小王(用0表示)、大王(用1表示)。输入n,输入n张扑克牌信息,从大到小输出它们的排序结果。 假设扑克牌的排序规则是大王、小王为第一大、第二大,剩余52张扑克牌按照先花色后大小排序。 花色:黑桃>红桃>梅花>方块。 大小: A>K>Q>J>>10>9>…>2。java版本
时间: 2024-04-01 20:37:55 浏览: 165
扑克牌3张两人比大小,C语言代码.pdf
5星 · 资源好评率100%
以下是 Java 版本的实现代码:
```java
import java.util.*;
public class PokerSort {
static class Poker implements Comparable<Poker> {
int type; // 0: 小王, 1: 大王, 2-5: 黑桃、红桃、梅花、方块
int num; // 0-12: 2-10, J-Q-K-A
public Poker(int type, int num) {
this.type = type;
this.num = num;
}
@Override
public int compareTo(Poker p) {
if (this.type == p.type) {
return Integer.compare(this.num, p.num);
} else {
return Integer.compare(this.type, p.type);
}
}
@Override
public String toString() {
String[] types = {"小王", "大王", "黑桃", "红桃", "梅花", "方块"};
String[] nums = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
return types[type] + " " + nums[num];
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
List<Poker> pokers = new ArrayList<>();
for (int i = 0; i < n; i++) {
int type = sc.nextInt();
int num = sc.nextInt();
pokers.add(new Poker(type, num));
}
Collections.sort(pokers, Collections.reverseOrder());
for (Poker poker : pokers) {
System.out.println(poker);
}
}
}
```
输入格式为:
```
n
type1 num1
type2 num2
...
typen numn
```
其中 n 表示扑克牌的数量,type 和 num 分别表示扑克牌的花色和大小。输出的结果即为从大到小排列的扑克牌信息。
阅读全文