欢乐斗地主案例

1,创建对象

package anlidoudizhu;public class pai implements Comparable<pai> {private Double value;private String name;@Overridepublic int compareTo(pai o) {return -Double.compare(this.value,o.value);}//升序排序,treeset集合public Double getValue() {return value;}public void setValue(Double value) {this.value = value;}public String getName() {return name;}public void setName(String name) {this.name = name;}public pai() {}public pai(Double value, String name) {this.value = value;this.name = name;}
}

2,添加对象

public void add(){set.add(new pai(3.1,"红桃3"));set.add(new pai(4.1,"红桃4"));set.add(new pai(5.1,"红桃5"));set.add(new pai(6.1,"红桃6"));set.add(new pai(7.1,"红桃7"));set.add(new pai(8.1,"红桃8"));set.add(new pai(9.1,"红桃9"));set.add(new pai(10.1,"红桃10"));set.add(new pai(11.1,"红桃J"));set.add(new pai(12.1,"红桃Q"));set.add(new pai(13.1,"红桃K"));set.add(new pai(14.1,"红桃A"));set.add(new pai(15.1,"红桃2"));set.add(new pai(3.2,"黑桃3"));set.add(new pai(4.2,"黑桃4"));set.add(new pai(5.2,"黑桃5"));set.add(new pai(6.2,"黑桃6"));set.add(new pai(7.2,"黑桃7"));set.add(new pai(8.2,"黑桃8"));set.add(new pai(9.2,"黑桃9"));set.add(new pai(10.2,"黑桃10"));set.add(new pai(11.2,"黑桃J"));set.add(new pai(12.2,"黑桃Q"));set.add(new pai(13.2,"黑桃K"));set.add(new pai(14.2,"黑桃A"));set.add(new pai(15.2,"黑桃2"));set.add(new pai(3.3,"方块3"));set.add(new pai(4.3,"方块4"));set.add(new pai(5.3,"方块5"));set.add(new pai(6.3,"方块6"));set.add(new pai(7.3,"方块7"));set.add(new pai(8.3,"方块8"));set.add(new pai(9.3,"方块9"));set.add(new pai(10.3,"方块10"));set.add(new pai(11.3,"方块J"));set.add(new pai(12.3,"方块Q"));set.add(new pai(13.3,"方块K"));set.add(new pai(14.3,"方块A"));set.add(new pai(15.3,"方块2"));set.add(new pai(3.4,"梅花3"));set.add(new pai(4.4,"梅花4"));set.add(new pai(5.4,"梅花5"));set.add(new pai(6.4,"梅花6"));set.add(new pai(7.4,"梅花7"));set.add(new pai(8.4,"梅花8"));set.add(new pai(9.4,"梅花9"));set.add(new pai(10.4,"梅花10"));set.add(new pai(11.4,"梅花J"));set.add(new pai(12.4,"梅花Q"));set.add(new pai(13.4,"梅花K"));set.add(new pai(14.4,"梅花A"));set.add(new pai(15.4,"梅花2"));set.add(new pai(1999.1,"大王"));set.add(new pai(1733.1,"小王"));}

3,洗牌,发牌,判断地主

Random r=new Random();int rom=r.nextInt(0,51);//判断地主public void show(){for (int i = 0; i < set.size(); i++) {if(i<=16){set1.add((pai)set.toArray()[i]);}else if(i<=33) set2.add((pai)set.toArray()[i]);else if(i<=50) set3.add((pai)set.toArray()[i]);}if(rom<=16){set1.add((pai)set.toArray()[52]);set1.add((pai)set.toArray()[53]);set1.add((pai)set.toArray()[51]);System.out.println("1是地主");}else if(rom<=33){set2.add((pai)set.toArray()[52]);set2.add((pai)set.toArray()[53]);set2.add((pai)set.toArray()[51]);System.out.println("2是地主");}else if(rom<=50){set3.add((pai)set.toArray()[52]);set3.add((pai)set.toArray()[53]);set3.add((pai)set.toArray()[51]);System.out.println("3是地主");}for (pai pai : set1) {System.out.print(pai.getName()+" ");}System.out.println("\n");for (pai pai : set2) {System.out.print(pai.getName()+" ");}System.out.println("\n");for (pai pai : set3) {System.out.print(pai.getName()+" ");}System.out.println("\n");}

4,系统界面

public void xitong(){boolean flag = true;System.out.println("----------欢迎来到欢乐斗地主---------");System.out.println("----------洗牌请选择1---------");System.out.println("----------发牌请选择2---------");System.out.println("----------退出请选这3---------");Scanner sc=new Scanner(System.in);while(flag){System.out.println("-----------请请输入选项--------");int choose=sc.nextInt();switch (choose){case 1:add();break;case 2:show();break;case 3:flag=false;break;default:System.out.println("输入有误,请重新输入");}}}

5全部代码

package anlidoudizhu;import java.util.Scanner;public class tset {public static void main(String[] args) {manager m=new manager();m.xitong();}
}
package anlidoudizhu;import java.util.*;public class manager {Set<pai> set =new HashSet<>();Set<pai> set1 =new TreeSet<>();Set<pai> set2=new TreeSet<>();Set<pai> set3=new TreeSet<>();public void xitong(){boolean flag = true;System.out.println("----------欢迎来到欢乐斗地主---------");System.out.println("----------洗牌请选择1---------");System.out.println("----------发牌请选择2---------");System.out.println("----------退出请选这3---------");Scanner sc=new Scanner(System.in);while(flag){System.out.println("-----------请请输入选项--------");int choose=sc.nextInt();switch (choose){case 1:add();break;case 2:show();break;case 3:flag=false;break;default:System.out.println("输入有误,请重新输入");}}}public void add(){set.add(new pai(3.1,"红桃3"));set.add(new pai(4.1,"红桃4"));set.add(new pai(5.1,"红桃5"));set.add(new pai(6.1,"红桃6"));set.add(new pai(7.1,"红桃7"));set.add(new pai(8.1,"红桃8"));set.add(new pai(9.1,"红桃9"));set.add(new pai(10.1,"红桃10"));set.add(new pai(11.1,"红桃J"));set.add(new pai(12.1,"红桃Q"));set.add(new pai(13.1,"红桃K"));set.add(new pai(14.1,"红桃A"));set.add(new pai(15.1,"红桃2"));set.add(new pai(3.2,"黑桃3"));set.add(new pai(4.2,"黑桃4"));set.add(new pai(5.2,"黑桃5"));set.add(new pai(6.2,"黑桃6"));set.add(new pai(7.2,"黑桃7"));set.add(new pai(8.2,"黑桃8"));set.add(new pai(9.2,"黑桃9"));set.add(new pai(10.2,"黑桃10"));set.add(new pai(11.2,"黑桃J"));set.add(new pai(12.2,"黑桃Q"));set.add(new pai(13.2,"黑桃K"));set.add(new pai(14.2,"黑桃A"));set.add(new pai(15.2,"黑桃2"));set.add(new pai(3.3,"方块3"));set.add(new pai(4.3,"方块4"));set.add(new pai(5.3,"方块5"));set.add(new pai(6.3,"方块6"));set.add(new pai(7.3,"方块7"));set.add(new pai(8.3,"方块8"));set.add(new pai(9.3,"方块9"));set.add(new pai(10.3,"方块10"));set.add(new pai(11.3,"方块J"));set.add(new pai(12.3,"方块Q"));set.add(new pai(13.3,"方块K"));set.add(new pai(14.3,"方块A"));set.add(new pai(15.3,"方块2"));set.add(new pai(3.4,"梅花3"));set.add(new pai(4.4,"梅花4"));set.add(new pai(5.4,"梅花5"));set.add(new pai(6.4,"梅花6"));set.add(new pai(7.4,"梅花7"));set.add(new pai(8.4,"梅花8"));set.add(new pai(9.4,"梅花9"));set.add(new pai(10.4,"梅花10"));set.add(new pai(11.4,"梅花J"));set.add(new pai(12.4,"梅花Q"));set.add(new pai(13.4,"梅花K"));set.add(new pai(14.4,"梅花A"));set.add(new pai(15.4,"梅花2"));set.add(new pai(1999.1,"大王"));set.add(new pai(1733.1,"小王"));}Random r=new Random();int rom=r.nextInt(0,51);//判断地主public void show(){for (int i = 0; i < set.size(); i++) {if(i<=16){set1.add((pai)set.toArray()[i]);}else if(i<=33) set2.add((pai)set.toArray()[i]);else if(i<=50) set3.add((pai)set.toArray()[i]);}if(rom<=16){set1.add((pai)set.toArray()[52]);set1.add((pai)set.toArray()[53]);set1.add((pai)set.toArray()[51]);System.out.println("1是地主");}else if(rom<=33){set2.add((pai)set.toArray()[52]);set2.add((pai)set.toArray()[53]);set2.add((pai)set.toArray()[51]);System.out.println("2是地主");}else if(rom<=50){set3.add((pai)set.toArray()[52]);set3.add((pai)set.toArray()[53]);set3.add((pai)set.toArray()[51]);System.out.println("3是地主");}for (pai pai : set1) {System.out.print(pai.getName()+" ");}System.out.println("\n");for (pai pai : set2) {System.out.print(pai.getName()+" ");}System.out.println("\n");for (pai pai : set3) {System.out.print(pai.getName()+" ");}System.out.println("\n");}}
package anlidoudizhu;public class pai implements Comparable<pai> {private Double value;private String name;@Overridepublic int compareTo(pai o) {return -Double.compare(this.value,o.value);}//升序排序,treeset集合public Double getValue() {return value;}public void setValue(Double value) {this.value = value;}public String getName() {return name;}public void setName(String name) {this.name = name;}public pai() {}public pai(Double value, String name) {this.value = value;this.name = name;}
}

6,遇到的问题与解决办法

1,hashset和treeset不能直接通过索引获取元素

需要使用toarray()方法转换成数组,在使用(pai)进行强制类型转换

2,print()方法打印不换行

3,else if 而不是if

4,treeset集合,自定义排序,在类中需要接接口Comparable小数得比较,用Double方法,this是左边的值,o是右边的值,要是升序左边-右边大于0,反之小于0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/63632.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

技术型企业如何高效搭建企业博客以增强品牌影响力和市场竞争力

在数字化时代&#xff0c;技术型企业面临着激烈的市场竞争和快速变化的行业环境。为了在这场竞争中脱颖而出&#xff0c;企业需要寻找新的营销渠道和品牌建设工具。企业博客作为一种低成本、高效率的在线内容平台&#xff0c;已经成为技术型企业增强品牌影响力和市场竞争力的重…

go-zero(十二)消息队列

go zero 消息队列 在微服务架构中&#xff0c;消息队列主要通过异步通信实现服务间的解耦&#xff0c;使得各个服务可以独立发展和扩展。 go-zero中使用的队列组件go-queue&#xff0c;是gozero官方实现的基于Kafka和Beanstalkd 的消息队列框架,我们使用kafka作为演示。 一、…

【JAVA高级篇教学】第二篇:使用 Redisson 实现高效限流机制

在高并发系统中&#xff0c;限流是一项非常重要的技术手段&#xff0c;用于保护后端服务&#xff0c;防止因流量过大导致系统崩溃。本文将详细介绍如何使用 Redisson 提供的 RRateLimiter 实现分布式限流&#xff0c;以及其原理、使用场景和完整代码示例。 目录 一、什么是限流…

基于卷积神经网络的Caser算法

将一段交互序列嵌入到一个以时间为纵轴的平面空间中形成“一张图”后&#xff0c;基于卷积序列嵌入的推荐&#xff08;Caser&#xff09;算法利用多个不同大小的卷积滤波器&#xff0c;来捕捉序列中物品间的点级&#xff08;point-level&#xff09;、联合的&#xff08;union-…

ubuntu下的chattts 学习5:Example: self introduction

代码 import ChatTTS import torch import torchaudiochat ChatTTS.Chat() chat.load(compileFalse) # Set to True for better performance ################################### inputs_en """ chat T T S is a text to speech model designed for dialogu…

【银河麒麟高级服务器操作系统】修改容器中journal服务日志存储位置无效—分析及解决方案

了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;https://product.kylinos.cn 开发者专区&#xff1a;https://developer.kylinos.cn 文档中心&#xff1a;https://documentkylinos.cn 服务器环境以及配置 【机型】 整机类型/架构&am…

HTML:表格重点

用表格就用table caption为该表上部信息&#xff0c;用来说明表的作用 thead为表头主要信息&#xff0c;效果加粗 tbody为表格中的主体内容 tr是 table row 表格的行 td是table data th是table heading表格标题 &#xff0c;一般表格第一行的数据都是table heading

[创业之路-187]:《华为战略管理法-DSTE实战体系》-1-从UTStarcom的发展历程,如何辩证的看企业初期发展太顺利中的危机

目录 一、UTStarcom&#xff08;UT斯达康&#xff09;的发展历程 1、创立与初期发展 2、快速成长与上市 3、技术创新与业务拓展 4、战略调整与持续发展 二、从UTStarcom的发展历程&#xff0c;如何辩证的看企业初期发展太顺利中的危机 1、企业初期发展的顺利表现 2、顺…

ubuntu系统生成SSL证书配置https

自签名【Lets Encrypt】的测试证书&#xff0c;有效期三个月。 第一步&#xff1a;安装acme&#xff0c;如果没有安装git&#xff0c;需要提前安装 下载came资源 git clone https://github.com/Neilpang/acme.sh.git 无法访问&#xff0c;可以试用gitee的资源&#xff0c;安…

CentOS 7 环境下常见的操作和配置

目录 1. CentOS 7 中的 vsftpd 配置与使用 安装与启动 vsftpd 配置 vsftpd&#xff08;/etc/vsftpd/vsftpd.conf&#xff09; 常见命令 2. 使用 yum 包管理器 3. 安全性与防火墙配置 开放端口 4. 使用 systemd 管理服务 5. SELinux 配置 查看 SELinux 状态 临时禁用…

《AI教学能力:开启教育新纪元》

一、摘要 AI 在教育领域的应用日益广泛&#xff0c;对教学能力产生了深远影响。本文将深入探讨 AI 教学能力的核心技术、实际应用、教学模式与策略、全球实践以及未来趋势&#xff0c;为教育的现代化发展提供参考。 摘要&#xff1a; AI 在教育领域的应用及其对教学能力的影响…

【信息系统项目管理师】第10章:项目进度管理过程详解

文章目录 一、规划进度管理1、输入2、工具与技术3、输出 二、定义活动1、输入2、工具与技术3、输出 三、排列活动顺序1、输入2、工具与技术3、输出 四、估算活动持续时间1、输入2、工具与技术3、输出 五、制订进度计划1、输入2、工具与技术3、输出 六、控制进度1、输入2、工具与…

域渗透入门靶机之HTB-Cicada

easy难度的windows靶机 信息收集 端口探测 nmap -sT --min-rate 10000 -p- 10.10.11.35 -oA ./port 发现开放了53&#xff0c;88&#xff0c;389等端口&#xff0c;推测为域控 进一步信息收集&#xff0c;对爆破的端口进行更加详细的扫描 小tips&#xff1a;对于众多的端口&…

pgsql中如何设计维度表、度量表、事实表、大宽表

在 PostgreSQL 中设计维度表、度量表、事实表和大宽表需要遵循数据仓库建模的最佳实践。以下是如何设计这些表的详细步骤&#xff0c;包括建模的结构、示例 SQL 代码以及注意事项。 1. 维度表 (Dimension Table) 设计步骤&#xff1a; 确定维度&#xff1a;识别需要的维度&am…

单片机:实现贪吃蛇(附带源码)

单片机实现贪吃蛇游戏是一个较为复杂的项目&#xff0c;涉及到硬件控制、程序设计、图形显示、输入处理等方面。这里我们以基于8051单片机为例&#xff0c;详细介绍如何通过硬件和软件来实现一个简单的贪吃蛇游戏。为了让解释更加清晰&#xff0c;我们将逐步分析贪吃蛇的游戏逻…

zerotier实现内网穿透(访问内网服务器)

moo 内网穿透工具 实用工具&#xff1a;zerotier 目录 内网穿透工具 Windows下zerotier安装 ubuntu系统下的zerotier安装 使用moon加速 Windows下zerotier安装 有了网络之后&#xff0c;会给你一个网络id&#xff0c;这个网络id是非常重要的&#xff0c;其它设备要加入…

v-for遍历多个el-popover;el-popover通过visible控制显隐;点击其他隐藏el-popover

场景&#xff1a;el-popover通过visible控制显隐&#xff1b;同时el-popover是遍历生成的多个。 原文档的使用visible后就不能点击其他地方使其隐藏 主要监听全局点击事件即可 <template><div><template v-for"(item,index) in arr" :key"index&…

Scala的隐式转换规则

一&#xff0c; scala中的隐式转换规则 1.显式定义规则 2.无歧在同一作用域不可以有歧义&#xff0c;即当有两个变量定义的类型相同时&#xff0c;只能保留一个。&#xff09; 3.定义域规则 4.不能多次转换规则&#xff08;从源类型到目的地类型中间是一次性转换的 &#…

Robust Depth Enhancement via Polarization Prompt Fusion Tuning

paper&#xff1a;论文地址 code&#xff1a;github项目地址 今天给大家分享一篇2024CVPR上的文章&#xff0c;文章是用偏振做提示学习&#xff0c;做深度估计的。模型架构图如下 这篇博客不是讲这篇论文的内容&#xff0c;感兴趣的自己去看paper&#xff0c;主要是分享环境&…

vue3学习——Attribute 绑定(v-bind)

在 Vue 中&#xff0c;mustache 语法 (即双大括号) 只能用于文本插值。为了给 attribute 绑定一个动态值&#xff0c;需要使用 v-bind 指令&#xff1a; <div v-bind:id"dynamicId"></div> 指令是由 v- 开头的一种特殊 attribute。它们是 Vue 模板语法…