需求:
案例分析
准备牌:
牌可以设计为一个ArrayList<String>,每个字符串为一张牌。
每张牌由花色数字两部分组成,我们可以使用花色集合与数字集合嵌套迭代完成每张牌的组装。
牌由Collections类的shuffle方法进行随机排序。
发牌:
将每个人以及底牌设计为ArrayList<String>,将最后3张牌直接存放于底牌,剩余牌通过对3取模依次发牌。
看牌:
直接打印每个集合。
代码实现:
package demo01; import java.util.ArrayList; import java.util.Collections; public class DouDIZhu { public static void main(String[] args) { // 准备好一个集合存储牌 ArrayList<String> poker = new ArrayList<>(); //定义一个数组存储扑克的花色 String[] colors = {"♠", "♥", "♣", "♦"}; // 定义一个数组存储扑克的大小 String[] numbers = {"A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3", "2"}; // 添加2张特殊的牌 大小王 进入集合 poker.add("大王"); poker.add("小王"); // 循环遍历,组装牌 for (String s : colors) { for (String number : numbers) { // 添加到存储牌的集合中去 poker.add(s + number); } } // 洗牌 Collections.shuffle(poker); //定义一个存储底牌的集合 ArrayList<String> diPa = new ArrayList<>(); ArrayList<String> Game1 = new ArrayList<>(); ArrayList<String> Game2 = new ArrayList<>(); ArrayList<String> Game3 = new ArrayList<>(); // 发牌 for (int i = 0; i < poker.size(); i++) { // index 大于等于51 牌全部给底牌 if (i >= 51) { diPa.add(poker.get(i)); } else if (i % 3 == 0) { Game1.add(poker.get(i)); } else if (i % 3 == 1) { Game2.add(poker.get(i)); } else if (i % 3 == 2) { Game3.add(poker.get(i)); } } // 看牌 System.out.println(diPa); System.out.println(Game1); System.out.println(Game2); System.out.println(Game3); } }
执行结果: