Java程序设计之扑克牌
这段代码的主要实现功能扑克牌的洗牌和发牌功能,一副牌,红桃,黑桃,梅花,方片,A~K,不含大小王。
构造一个class。
首先是声明花色:
private String[] sign={"方片","红桃","黑桃","梅花"};//扑克的四种花色
然后是洗牌功能,意味花色与A~K结合构造成顺序的52张扑克牌,构造一个ArrayList对象存储扑克牌的值。
private static ArrayList<String> List;
接下来再类中实现此方法,构造出一副扑克牌。
public void Init(){
List = new ArrayList();
for(String str:sign){
for(int i = 1;i<=13;i++){
String extra_sign = ""; //将数字与扑克匹配
if(i == 1){
extra_sign = "A";
List.add(str+extra_sign);
}else if(i == 11){
extra_sign = "J";
List.add(str+extra_sign);
}else if(i == 12){
extra_sign = "Q";
List.add(str+extra_sign);
}else if(i == 13){
extra_sign = "K";
List.add(str+extra_sign);
}else{
List.add(str+i);
}
}
}
}
此时衣服扑克牌已经构造完成,接下来通过方法实现扑克牌的乱序发放到四人的手中。
public void Hands(){
int i = 0,j=0;
Collections.shuffle(List);//Collection类中的shuffle方法将<List>乱序排列
for(String str:List){
if(j == 4)
break;
if(i == 0){
hands[j] = str+" ";
i++;
}
//这里不使用for(i<13){
// hands[j] = str+" ";
// i++;
//}是因为第一个下标为0的元素为null,所以多了一步判断
if(0<i && i<13){
hands[j] +=str+" " ;
i++;
}else{
i = 0;
j++;
}
}
}
洗牌和分牌步骤已经完成,下面贴上完整代码:
package com; import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator; public class Pokes { private String[] sign={"方片","红桃","黑桃","梅花"};
private static String[] hands = new String[4];
private static ArrayList<String> List; Pokes(){
} public void Init(){
List = new ArrayList();
for(String str:sign){
for(int i = 1;i<=13;i++){
String extra_sign = "";
if(i == 1){
extra_sign = "A";
List.add(str+extra_sign);
}else if(i == 11){
extra_sign = "J";
List.add(str+extra_sign);
}else if(i == 12){
extra_sign = "Q";
List.add(str+extra_sign);
}else if(i == 13){
extra_sign = "K";
List.add(str+extra_sign);
}else{
List.add(str+i);
}
}
}
} public void Hands(){
int i = 0,j=0;
Collections.shuffle(List);
for(String str:List){
if(j == 4)
break;
if(i == 0){
hands[j] = str+" ";
i++;
}
if(0<i && i<13){
hands[j] +=str+" " ;
i++;
}else{
i = 0;
j++;
}
}
} public static void main(String[] args) {
Pokes p = new Pokes();
p.Init();
p.Hands();
System.out.println(hands[0]);
System.out.println(hands[1]);
System.out.println(hands[2]);
System.out.println(hands[3]); } }
通过debug结果如下:
第一次输出结果:
黑桃2 黑桃2 红桃A 红桃8 黑桃9 黑桃7 梅花4 梅花8 黑桃5 梅花3 红桃10 方片Q 方片K
黑桃6 黑桃6 方片8 红桃4 红桃7 黑桃3 梅花K 红桃J 黑桃J 梅花2 梅花10 红桃Q 方片9
方片A 方片A 梅花Q 黑桃8 梅花J 红桃3 方片3 红桃6 红桃2 方片7 梅花9 红桃5 梅花5
方片6 方片6 梅花A 红桃K 黑桃K 方片10 黑桃A 梅花7 方片J 梅花6 方片5 黑桃10 红桃9
第二次输出结果:
黑桃10 黑桃10 红桃5 黑桃7 方片3 方片Q 红桃8 方片6 梅花5 方片9 方片2 红桃Q 红桃9
黑桃5 黑桃5 黑桃2 红桃2 黑桃K 梅花8 梅花2 黑桃9 红桃7 黑桃8 红桃6 梅花9 黑桃6
红桃10 红桃10 梅花3 黑桃A 梅花10 方片7 方片10 黑桃4 黑桃Q 梅花7 红桃K 黑桃3 红桃3
梅花6 梅花6 梅花A 梅花K 红桃A 梅花J 方片8 红桃J 黑桃J 方片4 方片A 红桃4 方片5
简单的Java扑克牌程序,初始化构造一副扑克牌,利用Collection.shuffle(<List>)将List中的元素打乱顺序,依次分配给四个String[]。
Java程序设计之扑克牌的更多相关文章
- 《Java程序设计》第四章-认识对象
20145221<Java程序设计>第四章-认识对象 总结 教材学习内容总结 类与对象 定义:对象是Java语言中重要的组成部分,之前学过的C语言是面向过程的,而Java主要是面向对象的. ...
- 20145314郑凯杰 《Java程序设计》第6周学习总结
20145314郑凯杰 <Java程序设计>第6周学习总结 教材学习内容总结 本次就不放上每个程序的运行结果了,在下面的问题探究里会写出的.代码托管如下: 第十章 InputStream与 ...
- 《Java程序设计》 课程教学
<Java程序设计> 课程教学 给学生 考核方式 100分构成 翻转课堂考核12次(5*12 = 60):每次考试20-30道题目,考试成绩规格化成5分(比如总分20分就除以4) 注意:不 ...
- 2016-2017-2 《Java程序设计》教学进程
2016-2017-2 <Java程序设计>教学进程 目录 考核方式 课前准备 教学进程 第00周学习任务和要求 第01周学习任务和要求 第02周学习任务和要求 第03周学习任务和要求 第 ...
- 2016-2017-2 《Java程序设计》预备作业2总结
2016-2017-2 <Java程序设计>预备作业2总结 古希腊学者普罗塔戈说过:「头脑不是一个要被填满的容器,而是一束需要被点燃的火把.」 在对计算机系的学生情况的调查中,我说: 最近 ...
- 2016-2017-2 《Java程序设计》预备作业1 总结
2016-2017-2 <Java程序设计>预备作业1 总结 预备作业01:你期望的师生关系是什么见https://edu.cnblogs.com/campus/besti/2016-20 ...
- 2016-2017-2 《Java程序设计》课程学生博客和代码托管链接
2016-2017-2 <Java程序设计>课程学生博客和代码托管链接 博客 1552 20155201 李卓雯 20155202 张 旭 20155203 杜可欣 20155204 王 ...
- 《Java程序设计与数据结构教程(第二版)》学习指导
<Java程序设计与数据结构教程(第二版)>学习指导 欢迎关注"rocedu"微信公众号(手机上长按二维码) 做中教,做中学,实践中共同进步! 原文地址:http:// ...
- 20145208 《Java程序设计》第0周学习总结
20145208 <Java程序设计>第0周学习总结 阅读心得 读了老师推荐的几个文章,虽然第四个文章"为什么一定要自学"报告资源不存在而无法阅读,其他的三篇文章都言之 ...
随机推荐
- Yii2:避免文件路径暴漏,代理访问文件
制作背景:公司要做第三方文件管理系统,客户有时候需要直接访问文件,但是我们又不想暴露文件路径,才有这代理访问 基本功能介绍:读取txt文档.读取图片,如果有需要,可以通过插件读取doc.pdf文档, ...
- Singleton
1.//懒汉模式 //天生线程不安全,但是效率高 public class Singleton { private static Singleton singleton; private Single ...
- ABP之动态WebAPI(二)
HttpControllerDescriptor与HttpActionDescriptor HttpControllerDescriptor封装了某个HttpController类型的元数据,我们可以 ...
- 十一个行为模式之访问者模式(Visitor Pattern)
定义: 提供一个作用于某对象结构(通常是一个对象集合)的操作的接口,使得在添加新的操作或者在添加新的元素时,不需要修改原有系统,就可以对各个对象进行操作. 结构图: Visitor:抽象访问者类,对元 ...
- 移动端UC /QQ 浏览器的部分私有Meta 属性
<meta name="format-detection" content ="telephone=no"/> 格式检测 禁止识别我们页面中的数 ...
- 操作数数据类型 ntext 对于 max 运算符无效
SoStyle.chi_description AS chi_description, SoStyle.description AS eng_description, SoStyle.chi_qual ...
- arcgis for flex全国地图天气预报的具体实现过程解析
系统架构是B/S,开发语言是flex,开发工具是myeclise或者flashbuild,通过调用百度提供的在线天气预报web api接口的方式来实现. 采用地图是ArcGIS全国地图,开发接口为ar ...
- SharePoint 快捷获取列表栏内部名称
在列表设置页面点击浏览器书签获取列表字段内部名称,使用效果如下图: 如何使用: 修改浏览器上任意书签的url地址为以下代码,注意:代码中不能有换行符 javascript:(function(){va ...
- 原生JS 表单提交验证器
转载:http://www.cnblogs.com/sicd/p/4613628.html 一.前言 最近在开发一个新项目,需要做登陆等一系列的表单提交页面.在经过“缜密”的讨论后,我们决定 不用外部 ...
- jQuery对表格的操作及其他应用
表格操作 1.隔行变色:对普通表格进行隔行换色:单击显示高亮样式:复选框选中高亮 <!DOCTYPE html> <html> <head> <meta ht ...