Java集合练习—扑克牌
使用集合实现创建一副扑克牌,并随机给三位玩家发牌,留三张底牌,最后按从小到大的顺序输出
具体代码如下
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Poker {
public static void main(String[] args) {
//1.创建一副牌
String[] colors = {"♥","♦","♠","♣"};
String[] nums = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
//牌的集合
Map<Integer,String> pokers = new HashMap<>();
//牌的编号
List<Integer> numbers = new ArrayList<>();
//牌的初始编号
int pokerNum = 0;
for (int i = 0; i < nums.length; i++) {
for (int j = 0; j < colors.length; j++) {
//组合牌名
String pokerName = colors[j] +nums[i];
//牌的对应编号
numbers.add(pokerNum);
//对应双列集合
pokers.put(pokerNum,pokerName);
//牌号自加
pokerNum++;
}
}
//添加大小王
pokers.put(pokerNum, "小王");
numbers.add(pokerNum++);
pokers.put(pokerNum, "大王");
numbers.add(pokerNum);
//2.洗牌
Collections.shuffle(numbers);
//3.发牌
//三位玩家,一个底牌
List<Integer> dipai = new ArrayList<>();
List<Integer> player1 = new ArrayList<>();
List<Integer> player2 = new ArrayList<>();
List<Integer> player3 = new ArrayList<>();
//循环发牌
for (int i = 0; i < numbers.size(); i++) {
Integer number = numbers.get(i);
if(i>=numbers.size()-3) {
dipai.add(number);
}else if(i%3==0) {
player1.add(number);
}else if(i%3==1) {
player2.add(number);
}else if(i%3==2) {
player3.add(number);
}
}
//4.看牌
System.out.print("player1:");
view(pokers,player1);
System.out.println();
System.out.print("player2:");
view(pokers,player2);
System.out.println();
System.out.print("player3:");
view(pokers,player3);
System.out.println();
System.out.print("dipai:");
view(pokers,dipai);
}
/**
* 定义一个方法用来看牌
* */
public static void view(Map<Integer,String> pokers,List<Integer> player) {
//定义一个新集合用于接收转化后的集合
List<String> playerPoker = new ArrayList<>();
//将原集合从小到达排列
Collections.sort(player);
for(Integer in : player) {
playerPoker.add(pokers.get(in));
}
//格式化输出
for(String str : playerPoker) {
System.out.print(str+" ");
}
}
}
每次运行后控制台输出效果: