前言: 之前学了List常用的方法,下面就是用List来完成扑克牌练习~
通过扑克牌这个练习,进一步来掌握 List 的一些用法!

炸金花练习—目录

  • 思路
  • 代码实现:
    • 创建一张牌—Card类
    • 创建一副牌
  • 主类代码:
  • 输出示例:

思路

在我们动手写代码之前,我们需要思考扑克牌应该有什么?联想到我们平时玩扑克牌

  • 一张牌:有花色和点数两个属性,那么我们可以创建一个类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;}// get set 方法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;}@Overridepublic 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++) {//每种花色有 13张 牌for (int k = 2; k <= 10; k++) {//k 表示点数, int → Stringpoker.add(new Card(String.valueOf(k),suits[i]));
}// 单独处理 J Q K Apoker.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) {//1.创建一副牌List<Card> poker = buyPoker();//2.洗牌Collections.shuffle(poker);//3.发牌//假设有三个玩家//每个玩家就是 1 个 List,可把每个人的手牌放到List中,可把多个玩家再放到一个List中//即 players表示所有玩家的手牌信息List<List<Card>> players = new ArrayList<>();// 而每个List又表示一个玩家的手牌信息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(); // harmless race.shuffle(list, rnd);
}
.
private static Random r;

把 List 中的元素 随即打乱顺序
使用默认随机源对列表进行置换,所有置换发生的可能性都是大致相等的

输出示例:

扑克牌练习 【数据结构】相关推荐

  1. Java实现扑克牌程序(数据结构)

    思路: 在实现之前,先要想好步骤,思路清晰才不会出错. 要实现一副扑克牌,首先要创建这个类,然后有一副扑克牌,之后进行洗牌,抓牌. 1.定义一个Card类 2.实现这个游戏: ①构造一副扑克牌(52张 ...

  2. Java数据结构之基于ArrayList编写大众麻将和扑克牌洗牌小练习

    目录 1.大众麻将洗牌小程序 1.1实现效果 1.2源码展示 2.扑克牌洗牌小程序 2.1实现效果 2.2源码展示 1.大众麻将洗牌小程序 大众麻将有3种牌色分别为万.条.筒.每种牌色有9张,如一万到 ...

  3. 扑克牌游戏,两人接龙(数据结构:队列、栈、双向链表)

    游戏规则: 1.将一副牌中的大小王去掉,剩余的52张牌(1-13)*4,洗牌后按顺序分配给两名选手(这里用的方法是随机抽取其中的一张牌发给选手): 2.随机抽取其中一人先出牌,之后两人轮流将自己手里最 ...

  4. 【数据结构】ArrayList的具体使用(杨辉三角、扑克牌游戏)

    目录 1.了解集合的框架 2.了解ArrayList类 2.1.认识ArrayList类当中的属性 2.1.认识ArrayList类库当中的方法 2.1.1.了解构造方法 2.2.ArrayList类 ...

  5. Java数据结构与算法——插入排序

    声明:码字不易,转载请注明出处,欢迎文章下方讨论交流. 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督.本篇文章介绍排序算法中插入排序算法,包括插入排序的思路,适用场景,性能分析,ja ...

  6. raptor五个数排序流程图_数据结构与算法(一):排序(上)

    做这个系列一是记录自己的学习过程,二是整合目前我所接触的比较好的资料,给出最直观,最通俗的算法解释 总体概况 十大排序算法:(比较排序):冒泡.选择.插入.归并.快速.希尔.堆排序 基数排序.桶排序. ...

  7. 微软等数据结构+算法面试100题全部答案集锦

    微软等数据结构+算法面试100题全部答案集锦 作者:July.阿财. 时间:二零一一年十月十三日. 引言 无私分享造就开源的辉煌. 今是二零一一年十月十三日,明日14日即是本人刚好开博一周年.在一周年 ...

  8. 使用qsort对不连续的内存数据排序_数据结构教程_v20201121

    数据结构入门 1.    什么是数据结构 2.    数据结构有哪些,常用数据结构详解 3.    数据的逻辑结构和存储结构(物理结构)详解 4.    数据结构和算法的关系和区别 5.    数据结 ...

  9. 用java制作扑克牌_阿里三面被挂,幸获内推,历经5轮终于拿到口碑offer(java研发)...

    每一个互联网人心中都有一个大厂梦,百度.阿里巴巴.腾讯是很多互联网人梦寐以求的地方,小编也不例外.但是,BAT等一线互联网大厂并不是想进就能够进的,它对人才的技术能力和学历都是有一定要求的,所以除了学 ...

  10. 在Object-C中学习数据结构与算法之排序算法

    笔者在学习数据结构与算法时,尝试着将排序算法以动画的形式呈现出来更加方便理解记忆,本文配合Demo 在Object-C中学习数据结构与算法之排序算法阅读更佳. 目录 选择排序 冒泡排序 插入排序 快速 ...

最新文章

  1. 关于session为什么要持久化?
  2. json解析 子类和父类同名属性如何赋值_想学变量的解构赋值?看完这一篇就够了...
  3. link rel=canonical 用法
  4. MFC socket编程
  5. 如何用VB编程实现关闭WINDOWS窗口?
  6. FTP服务器上传文件操作方法,FTP工具(FLASHFXP)下载使用教程
  7. maya花瓣飘洒动画插件tjh_flower_fall下载及教程
  8. 超强功能WebSSH安装,解决Web远程SSH终端
  9. dxgi的概念以及奇怪问题处理
  10. Android VelocityTracker简介
  11. 暂存分支 Git stash
  12. ubuntu php7 pdo,记录捣鼓ubuntu下PHP7.1下安装sqlserver拓展
  13. 骨传导有什么品牌,骨传导耳机品牌推荐
  14. 2019江西(南昌)安博会 数字冰雹“警视”即将惊艳亮相
  15. IBIS模型:利用IBIS模型研究信号完整性问题
  16. samba服务器的功能
  17. 关于ECW文件格式读取
  18. 考研报名登录显示服务器错误,2018年考研报名常见问题:填写网报信息
  19. Regeorg 从python2改造为python3-从实战中学习socks5协议
  20. 移动端 H5 相关疑难总结

热门文章

  1. 54 小明的存钱计划
  2. Android曲线水波纹动画,Android水波纹显示进度效果,很炫
  3. For A, B such that AB is square, prove trAB = trBA.
  4. linux 添加用户到组命令,linux下添加用户组和用户
  5. WordPress评论摘要标签:comment_excerpt
  6. c语言的绝对值怎么表示,C语言中  绝对值  怎么表示?
  7. 面向三种典型程序语言的中小学计算思维课堂设计研究
  8. Adaptive让 Spark SQL 更高效更智能
  9. WifiManager 实现Wifi快捷开关
  10. Windows电脑多屏显示器设置方法怎么找回副屏显示器隐藏的敬业签软件