java斗地主的核心就是个算法,54张牌随机发给三个人,农民每人17张,地主20张

1.准备牌:54张牌存储到一个集合中特殊牌:大王,小王其他52张牌:定义一个数组/集合,存储4种花色;定义一个数组/集合,存储13个序号循环嵌套遍历两个数组/集合,组装52张牌2.洗牌
使用集合工具Collections的方法
static void shuffle(List<?> list)
随机打乱集合中元素的顺序3.发牌1人17张牌为底牌,轮流发牌,集合的索引(0-53)%3定义4个集合,存储3个玩家的牌和底牌4.看牌直接打印集合,遍历存储玩家和底牌的集合

发牌类,算法如下

import java.util.ArrayList;
import java.util.Collections;public class DouDiZhu {public static void main(String[] args) {//1.准备牌ArrayList<String> poker = new ArrayList<>();String[] colors = {"♥","♠","♦","♣"};String[] numbers ={"A","J","Q","K","2","3","4","5","6","7","8","9","10"};//存储大小王poker.add("大王");poker.add("小王");//循环遍历两个数组,组装52张牌for (String color : colors) {for (String number : numbers) {poker.add(color+number);}}/*2.洗牌使用集合的工具类Collections中的方法static void shuffle(List<?> list) 使用默认随机源对指定列表进行置换*/Collections.shuffle(poker);/*3.发牌*///定义4个集合,存储玩家的牌和底牌ArrayList<String> player01 = new ArrayList<>();ArrayList<String> player02 = new ArrayList<>();ArrayList<String> player03 = new ArrayList<>();ArrayList<String> dipai = new ArrayList<>();/*遍历poker集合,获取每一张牌使用poker集合的索引%3给3个玩家轮流发牌剩余3张牌给底牌注意:先判断底牌(i >=51)*/for (int i = 0;i < poker.size();i++) {String p = poker.get(i);if(i >=51) {dipai.add(p);}else if(i % 3 == 0) {player01.add(p);}else if(i % 3 == 1) {player02.add(p);}else if(i % 3 == 2) {player03.add(p);}}/*4.发牌*/System.out.println("张三" + player01);System.out.println("李四" + player02);System.out.println("王五" + player03);System.out.println("底牌" + dipai);}
}

执行main函数,控制台输入如下


-END-

关注微信公众号

java学长

学习更多java技术干货,提升职场技术水平!

java实现斗地主思路与算法相关推荐

  1. java快排算法解读,java 快排的思路与算法

    java 快排的思路与算法 有时候面试的时候的会问道Arrays.sort()是怎么实现的,我以前根本不知道是什么东西,最近点进去看了一下.直接吓傻, //看到这个时候还是比较淡定的,可怕的事情来了. ...

  2. java冒泡排序实现思路_054-冒泡排序算法思路图解

    2.网上数据结构和算法的课程不少,但存在两个问题: 1)授课方式单一,大多是照着代码念一遍,数据结构和算法本身就比较难理解,对基础好的学员来说,还好一点,对基础不好的学生来说,基本上就是听天书了 2) ...

  3. Java虚拟机规范阅读(二)IEEE754简介以及Java虚拟机中的浮点算法

    什么是浮点数 在计算机系统的发展过程中,曾经提出过多种方法表达实数.典型的比如相对于浮点数的定点数(Fixed Point Number).在这种表达方式中,小数点固定的位于实数所有数字中间的某个位置 ...

  4. 【面试篇】Java多线程并发-Java中的CAS机制算法

    Java中的CAS机制算法 a.CAS例子 再讲解CAS机制之前,先来看一道经典的并发执行1000次递增的问题: public class Test { public static int count ...

  5. Java 提供的默认排序算法

    Java 提供的默认排序算法. 这个问题本身就是有点陷阱的意味,因为需要区分是 Arrays.sort() 还是 Collections.sort() (底层是调用 Arrays.sort()):什么 ...

  6. Java数据结构第一讲-排序算法

    常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...

  7. java十进制转二进制简单算法

    Java十进制转二进制简单算法 一.编程思路 可以运用简单的数学的计算的方法.如下 这张图大家应该都不陌生,10(例子中的10)一直除以2,余数写在右面那一列,如果被整除右面写0,如果没有别整除,写他 ...

  8. 【Java校招面试】实战算法(五)——分数相加(虎牙)

    目录 前言 一.题目描述 二.解题思路 三.代码实现 后记 前言 "实战算法"是本专栏的第三个部分,本篇博文是第五篇博文,主要讲解虎牙笔试题--分数相加--的解法,如有需要,可: ...

  9. Java编程配置思路详解

    Java编程配置思路详解 SpringBoot虽然提供了很多优秀的starter帮助我们快速开发,可实际生产环境的特殊性,我们依然需要对默认整合配置做自定义操作,提高程序的可控性,虽然你配的不一定比官 ...

最新文章

  1. 工作笔记-2019.7.8
  2. 飞书上点链接怎么指定跳转浏览器_链接示例表功能还可以这样用??
  3. ITK:获取给定顶点周围的面孔列表
  4. Java SE 6 新特性: JMX 与系统管理(转载)-asp.net关注
  5. 【大话数据结构算法】哈夫曼树
  6. 【C#】VS2012+InstallShield2013制作软件更新包
  7. 【双百解法】剑指 Offer 15. 二进制中1的个数
  8. 居家洁士扫地机器人_扫地机器人哪个牌子好之科沃斯全屋清洁试用测评
  9. 移动端canvas_web前端开发分享-css,js移动篇
  10. GCC 命令行具体解释
  11. java 为何 无效_java – 为什么compareTo无效导致Collections.sor...
  12. MyBatis配置项--配置环境(environments)
  13. JAVA系统性能优化
  14. 如何复制百度文库中的内容
  15. 步进电机驱动C语言代码,单片机控制步进电机系统(C语言源代码)
  16. 基于Java实现的禁忌搜索算法
  17. QQ坦白说解密解决方案(二)
  18. 超参数(Hyperparameter)
  19. 虚拟电厂 3D 可视化,节能减排绿色发展
  20. linux drupal 7,在CentOS 7下试验Drupal 7

热门文章

  1. OpenGl学习之显示窗口重定形函数
  2. H3C路由器交换机配置 操作系统命令
  3. 汽车充电系统开发解决方案
  4. 夜暗心伤! 再见,妹子!
  5. WIN7系统安装及动态分区详解步骤
  6. Elasticsearch语法知多少之Term query
  7. R语言3.12 对应分析
  8. 北京一卡通以35288.8529万元挂牌出让68.45%股权,溢价率为84%
  9. U-boot之flash初始化完全代码分析
  10. docker 批量垃圾清理