- import java.util.List;
- import java.util.ArrayList;
- import java.util.Collections;
- /**
- * 官方Java Tutorials集合部分, List接口讲解实例:
- * 发牌小程序代码
- */
- public class DeckDemo {
- /*
- * 通过main方法接收两个参数:
- * hands : 将牌发给几个人
- * cards : 每个人发几张牌
- */
- public static void main(String[] args) {
- if (args.length < 2){
- System.out.println("该程序用于处理发牌操作,请输入正确格式: 人数 持牌数");
- return ;
- }
- // 定义两个变量获取输入
- int hands = Integer.parseInt(args[0]);
- int cardsPerHand = Integer.parseInt(args[1]);
- // 初始化一冲牌
- // 花色
- String[] suit = new String[] {
- "黑桃", "红桃",
- "梅花", "方片"
- };
- // A-K
- String[] rank = new String[] {
- "A", "2", "3", "4", "5",
- "6", "7", "8", "9", "10",
- "J", "Q", "K"
- };
- // 初始化
- List<String> deck = new ArrayList<>();
- for (int i=0; i<suit.length ; i++){
- for (int j=0; j<rank.length ; j++){
- deck.add(suit[i] + rank[j]);
- }
- }
- // 洗牌
- Collections.shuffle(deck);
- // 发牌
- // 发牌之前先判断牌的数量是否足够
- if (hands * cardsPerHand > deck.size()){
- System.out.println("对不起,牌数不够!");
- return ;
- }
- // 发牌
- for (int i = 0; i<hands ; i++){
- System.out.println(handsDeck(deck, cardsPerHand));
- }
- }
- public static <E> List<E> handsDeck(List<E> deck, int n) {
- int deckSize = deck.size();
- List<E> handView = deck.subList(deckSize - n, deckSize);
- List<E> hand = new ArrayList<E>(handView);
- handView.clear();
- return hand;
- }
- }
复制代码 |
|