Java练习——扑克牌发牌器
声明:学习自其他博主,感谢分享,这里自己也写了一下。
实现思路

  • - 构建一张扑克牌
  • - 构建一套扑克牌
  • - 测试

 构建一张扑克牌

  1. /**
  2. * @author 冬冬
  3. * 定义一个单张扑克牌类
  4. * 有花型,大小
  5. */
  6. public class Card {
  7.  
  8. private String flower; // 花型
  9. private int daxiao; // 点数
  10.  
  11. /**构造方法
  12. * @param flower
  13. * @param daxiao
  14. */
  15. public Card(String flower, int daxiao) {
  16. this.flower = flower;
  17. this.daxiao = daxiao;
  18. }
  19. /* (non-Javadoc)
  20. * @see java.lang.Object#toString()
  21. * 获取本张卡牌的花型与大小,对于特殊的大小,如1——A,输出时进行转换
  22. */
  23. public String toString() {
  24. String daxiaoStr = "";
  25. switch(daxiao) {
  26. case 1: daxiaoStr = "A"; break;
  27. case 11: daxiaoStr = "J"; break;
  28. case 12: daxiaoStr = "Q"; break;
  29. case 13: daxiaoStr = "K"; break;
  30. default: daxiaoStr = String.valueOf(daxiao);
  31. }
  32. return flower + daxiaoStr;
  33. }
  34. }

构建一套扑克牌

  1. public class Poker {
  2. private static String[] flowers = {"黑桃", "红桃", "草花", "方块"};
  3. private static int[] daxiaos = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
  4. private Card[] cards;//卡片数组,应该有54张,这里去掉大小王,只52张
  5. /**
  6. * 构造器
  7. * 按顺序实例化52张扑克牌
  8. */
  9. public Poker() {
  10. cards = new Card[52];
  11. for(int i = 0; i < flowers.length; i++) {
  12. for(int j = 0; j < daxiaos.length; j++) {
  13. cards[i * 13 + j] = new Card(flowers[i], daxiaos[j]);
  14. }
  15. }
  16. }
  17. /**
  18. * 洗牌 (随机乱序)
  19. * 对于52个Card实例数组随机乱序排列
  20. */
  21. public void shuffle() {
  22. for(int i = 0, len = cards.length; i < len; i++) {
  23. int index = (int) (Math.random() * len);
  24. Card temp = cards[index];
  25. cards[index] = cards[i];
  26. cards[i] = temp;
  27. }
  28. }
  29. /**
  30. * 发牌
  31. * @param index 发牌的位置
  32. *
  33. */
  34. public Card deal(int index) {
  35. return cards[index];
  36. }
  37. }

 测试

  1. public class Test {
  2.  
  3. public static void main(String[] args) {
  4. Poker poker = new Poker();//生成扑克牌
  5. poker.shuffle(); // 洗牌(乱序)
  6. Card c1 = poker.deal(0); // 发第一张牌
  7. //创建四个玩家,每个玩家13张空牌
  8. Card [] person1=new Card[13];
  9. Card [] person2=new Card[13];
  10. Card [] person3=new Card[13];
  11. Card [] person4=new Card[13];
  12. //为玩家的的空牌赋值
  13. for(int i=1;i<=52;i++)
  14. {
  15. if(i<=13) person1[i-1]=poker.deal(i-1);
  16. if(i>13&&i<=26) person2[i-1-13]=poker.deal(i-1);
  17. if(i>26&&i<=39) person3[i-1-26]=poker.deal(i-1);
  18. if(i>39&&i<=52) person4[i-1-39]=poker.deal(i-1);
  19. }
  20. //打印
  21. System.out.println("玩家1");
  22. for (Card card : person1) {
  23. System.out.print(card+" ");
  24. }
  25. System.out.println("");
  26. System.out.println("玩家2");
  27. for (Card card : person2) {
  28. System.out.print(card+" ");
  29. }
  30. System.out.println("");
  31. System.out.println("玩家3");
  32. for (Card card : person3) {
  33. System.out.print(card+" ");
  34. }
  35. System.out.println("");
  36. System.out.println("玩家4");
  37. for (Card card : person4) {
  38. System.out.print(card+" ");
  39. }
  40. }
  41. }

结果:

玩家1
红桃6 方块4 方块A 黑桃4 草花2 红桃Q 红桃J 红桃K 方块3 黑桃K 方块8 黑桃7 黑桃5
玩家2
草花A 黑桃2 红桃7 草花3 草花5 方块J 方块9 草花9 草花K 黑桃8 草花J 黑桃10 红桃8
玩家3
方块7 红桃4 红桃2 草花6 方块2 黑桃Q 黑桃9 黑桃A 草花10 草花7 红桃10 红桃A 方块Q
玩家4
红桃9 方块5 草花8 方块10 方块K 草花Q 黑桃3 红桃5 黑桃6 黑桃J 红桃3 方块6 草花4

注意事项

1. 不要忘记在Poker类里导入Card类,在Test类里面导入Poker和Card;
2. 自己想想,动手做一做才能真正理解。

Java练习——扑克牌发牌器的更多相关文章

  1. Java集合,扑克牌的小项目练习

    Java集合,扑克牌的小项目练习 2小时学完了类与集合,一直二倍加跳过,集合和类的学习我觉得得多实践中去记住,光靠背,永远也背不完,学的时候记一下常用的,特殊的就行了,用的时候再查,多写代码才能会,哈 ...

  2. 11大Java开源中文分词器的使用方法和分词效果对比

    本文的目标有两个: 1.学会使用11大Java开源中文分词器 2.对比分析11大Java开源中文分词器的分词效果 本文给出了11大Java开源中文分词的使用方法以及分词结果对比代码,至于效果哪个好,那 ...

  3. C算法编程题(一)扑克牌发牌

    前言 上周写<我的编程开始(C)>这篇文章的时候,说过有时间的话会写些算法编程的题目,可能是这两天周末过的太舒适了,忘记写了.下班了,还没回去,闲来无事就写下吧. 因为写C++的编程题和其 ...

  4. 黑马程序员——【Java高新技术】——类加载器

    ---------- android培训.java培训.期待与您交流! ---------- 一.概述 (一)类加载器(class loader) 用来动态加载Java类的工具,它本身也是Java类. ...

  5. Java中的类加载器

    转载:http://blog.csdn.net/zhangjg_blog/article/details/16102131 从java的动态性到类加载机制   我们知道,Java是一种动态语言.那么怎 ...

  6. Java中的类加载器以及Tomcat的类加载机制

    在加载阶段,虚拟机需要完成以下三件事情: 1.通过一个类的全限定名来获取其定义的二进制字节流. 2.将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构. 3.在Java堆中生成一个代表这个类 ...

  7. java swing 音乐播放器-乐乐音乐

    乐乐音乐1.0(本地版) 乐乐音乐是基于musique 开源播放器开发的java swing音乐播放器,实现了mp3.flac.ape.wav等多种音频格式的播放和ksc歌词的解析.制作和显示. 完成 ...

  8. [原]用C#模拟实现扑克牌发牌、排序程序…

    (1)52张扑克牌,四种花色(红桃.黑桃.方块和梅花),随机发牌给四个人. (2)最后将四个人的扑克牌包括花色打印在控制台上. 其中:     花色和点数用枚举类型实现     每张扑克牌用结构实 ...

  9. [原]用C#模拟实现扑克牌发牌、排序程序。

    (1)52张扑克牌,四种花色(红桃.黑桃.方块和梅花),随机发牌给四个人. (2)最后将四个人的扑克牌包括花色打印在控制台上. 其中:     花色和点数用枚举类型实现     每张扑克牌用结构实 ...

随机推荐

  1. BUAA-OO-2019 第四单元总结

    UML作业架构设计 这一单元的作业本质上是对数据之间的联系进行解析,并重新建立数据结构以方便查询的工作,这就要求我们了解各种UmlElement的结构以及他们之间的关系是如何组织的. 第十三次作业 在 ...

  2. wamp不能使用phpmyadmin,提示“You don't have permission to access /phpmyadmin/ on this server.”

    当你安装完成wamp后,打开localhost或ip时发现已经可以运行了 但想使用phpmyadmin时,发现提示如下内容: You don't have permission to access / ...

  3. django rest_framework vue 实现用户登录

    django rest_framework vue 实现用户登录 后端代码就不介绍了,可以参考  django rest_framework 实现用户登录认证 这里介绍一下前端代码,和前后端的联调过程 ...

  4. 部署LNMP应用平台

    一.LNMP应用平台概述 1.概述:LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构.Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/ ...

  5. Win10开启快速启动后关机变重启

    同样可以用来解决,“msconfig引导为空”,“默认操作系统为空”,“win10改为uefi启动后关机变重启”,“legacy转uefi后无法关机” 问题起因 换完主板和cpu后,新的主板在开机时总 ...

  6. Linux下bash的一些总结

    关于"交互式-非交互式"与"登录-非登陆"shell的总结 关于".bash_profile"和".bashrc"区别的 ...

  7. Educational Codeforces Round 78 (Rated for Div. 2) A. Shuffle Hashing

    链接: https://codeforces.com/contest/1278/problem/A 题意: Polycarp has built his own web service. Being ...

  8. Box HDU - 2475 (Splay 维护森林)

    Box \[ Time Limit: 5000 ms \quad Memory Limit: 32768 kB \] 题意 给出 \(n\) 个箱子的包含关系,每次两种操作. 操作 \(1\):把 \ ...

  9. Json、Pickle

    目录 Json pickle Json JSON是一个序列化模块,一种用于存储和交换数据的语法. JSON是用JavaScript对象表示法(JavaScript object notation)格式 ...

  10. redis缓存, 缓存击穿,缓存雪崩,缓存穿透

    在实际项目中,MySQL数据库服务器有时会位于另外一台主机,需要通过网络来访问数据库:即使应用程序与MySQL数据库在同一个主机中,访问MySQL也涉及到磁盘IO操作(MySQL也有一些数据预读技术, ...