前言: 之前学了List常用的方法,下面就是用List来完成扑克牌练习~ 通过扑克牌这个练习,进一步来掌握 List 的一些用法!
思路
在我们动手写代码之前,我们需要思考扑克牌应该有什么?联想到我们平时玩扑克牌
- 一张牌:有花色和点数两个属性,那么我们可以创建一个类Card,来表示一张牌
- 一副牌:一张牌是一个 Card,那么一些牌放在一起就组成了一副牌,就可以创建一个 List< Card > ,返回结果是若干个 Card 放在一起,得到了一个 List
- 花色和点数:使用 双for 循环处理花色和点数,第一层循环表示四种花色,第二层循环表示[2,10]点数的牌,将JQKA单独设置
代码实现:
创建一张牌—Card类
class Card{
private String point;
private String suit;
public Card(String point, String suit) {
this.point = point;
this.suit = suit;
}
public String getPoint() {
return point;
}
public void setPoint(String point) {
this.point = point;
}
public String getSuit() {
return suit;
}
public void setSuit(String suit) {
this.suit = suit;
}
@Override
public String toString() {
return "[" + this.point + this.suit + "]";
}
}
创建一副牌
private static List<Card> buyPoker(){
List<Card> poker = new ArrayList<>();
String[] suits = {"?","?","?","?"};
for (int i = 0; i < 4; i++) {
for (int k = 2; k <= 10; k++) {
poker.add(new Card(String.valueOf(k),suits[i]));
}
poker.add(new Card("J",suits[i]));
poker.add(new Card("Q",suits[i]));
poker.add(new Card("K",suits[i]));
poker.add(new Card("A",suits[i]));
}
valueOf方法: 原型: public static String valueOf(int i) { return Integer.toString(i); } . 即:将 int 转换成 String
主类代码:
public static void main(String[] args) {
List<Card> poker = buyPoker();
Collections.shuffle(poker);
List<List<Card>> players = new ArrayList<>();
players.add(new ArrayList<Card>());
players.add(new ArrayList<Card>());
players.add(new ArrayList<Card>());
for (int i = 0; i < 3; i++) {
for (int k = 0; k < 3; k++) {
List<Card> player = players.get(k);
player.add(poker.remove(0));
}
}
for (int i = 0; i < 3; i++) {
System.out.println("玩家" + i + players.get(i));
}
}
shuffle方法: . 方法原型:
public static void shuffle(List<?> list) {
Random rnd = r;
if (rnd == null)
r = rnd = new Random();
shuffle(list, rnd);
}
.
private static Random r;
把 List 中的元素 随即打乱顺序 使用默认随机源对列表进行置换,所有置换发生的可能性都是大致相等的
输出示例:
|