import java.util.ArrayList;import java.util.Collections;/** * 斗地主案例 */public class CardDemo { public static void main(String[] args) { //准备牌 //集合中记录一副牌 ArrayList<String> poker = new ArrayList<>(); //定义花色 ArrayList<String> colors = new ArrayList<>(); colors.add("♣"); colors.add("◇"); colors.add("♠"); colors.add("♥"); //定义一个集合存放数字 ArrayList<String> numbers = new ArrayList<>(); //使用循环赋值 for (int i = 2; i <= 10; i++) { numbers.add(i+""); } numbers.add("J"); numbers.add("Q"); numbers.add("K"); numbers.add("A"); //嵌套迭代的方式完成每一张牌的组装 //利用foreach for(String thisColor:colors){ // 外层循环遍历花色 for(String thisNumber:numbers){ // 内层循环遍历数字 //通过花色与数字对应每一张牌 poker.add(thisColor+thisNumber);//存入52张牌 } } //补充大小王 poker.add("大王"); poker.add("小王"); //测试 //System.out.println(poker); //洗牌-直接调用方法 //Collections是一个集合工具类,提供了很多的集合中处理的静态方法 Collections.shuffle(poker);//打乱集合 //发牌 - 将每个人及底牌设置为一个集合,最后的3张放入底牌中,剩余牌通过对3进行取余依次发牌 ArrayList<String> player1 = new ArrayList<>(); ArrayList<String> player2 = new ArrayList<>(); ArrayList<String> player3 = new ArrayList<>(); ArrayList<String> dipai = new ArrayList<>(); //使用普通for,通过下标处理 //除了最后3张,其他的都发给玩家 for (int i = 0; i < poker.size()-3; i++) { //获取当前牌 String thisCard = poker.get(i); //对3取余 if(i%3==0){ player1.add(thisCard); }else if(i%3==1){ player2.add(thisCard); }else{ player3.add(thisCard); } } //最后三张 for (int i = poker.size()-3; i < poker.size(); i++) { String thisCard = poker.get(i); dipai.add(thisCard); } //看牌 System.out.println(player1); System.out.println(player2); System.out.println(player3); System.out.println(dipai); }}