这段代码的主要实现功能扑克牌的洗牌和发牌功能,一副牌,红桃,黑桃,梅花,方片,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程序设计之扑克牌的更多相关文章

  1. 《Java程序设计》第四章-认识对象

    20145221<Java程序设计>第四章-认识对象 总结 教材学习内容总结 类与对象 定义:对象是Java语言中重要的组成部分,之前学过的C语言是面向过程的,而Java主要是面向对象的. ...

  2. 20145314郑凯杰 《Java程序设计》第6周学习总结

    20145314郑凯杰 <Java程序设计>第6周学习总结 教材学习内容总结 本次就不放上每个程序的运行结果了,在下面的问题探究里会写出的.代码托管如下: 第十章 InputStream与 ...

  3. 《Java程序设计》 课程教学

    <Java程序设计> 课程教学 给学生 考核方式 100分构成 翻转课堂考核12次(5*12 = 60):每次考试20-30道题目,考试成绩规格化成5分(比如总分20分就除以4) 注意:不 ...

  4. 2016-2017-2 《Java程序设计》教学进程

    2016-2017-2 <Java程序设计>教学进程 目录 考核方式 课前准备 教学进程 第00周学习任务和要求 第01周学习任务和要求 第02周学习任务和要求 第03周学习任务和要求 第 ...

  5. 2016-2017-2 《Java程序设计》预备作业2总结

    2016-2017-2 <Java程序设计>预备作业2总结 古希腊学者普罗塔戈说过:「头脑不是一个要被填满的容器,而是一束需要被点燃的火把.」 在对计算机系的学生情况的调查中,我说: 最近 ...

  6. 2016-2017-2 《Java程序设计》预备作业1 总结

    2016-2017-2 <Java程序设计>预备作业1 总结 预备作业01:你期望的师生关系是什么见https://edu.cnblogs.com/campus/besti/2016-20 ...

  7. 2016-2017-2 《Java程序设计》课程学生博客和代码托管链接

    2016-2017-2 <Java程序设计>课程学生博客和代码托管链接 博客 1552 20155201 李卓雯 20155202 张 旭 20155203 杜可欣 20155204 王 ...

  8. 《Java程序设计与数据结构教程(第二版)》学习指导

    <Java程序设计与数据结构教程(第二版)>学习指导 欢迎关注"rocedu"微信公众号(手机上长按二维码) 做中教,做中学,实践中共同进步! 原文地址:http:// ...

  9. 20145208 《Java程序设计》第0周学习总结

    20145208 <Java程序设计>第0周学习总结 阅读心得 读了老师推荐的几个文章,虽然第四个文章"为什么一定要自学"报告资源不存在而无法阅读,其他的三篇文章都言之 ...

随机推荐

  1. Xamarin android 之Activity详解

    序言: 上篇大概的讲解了新建一个android的流程.今天为大家带来的是Activity详解,因为自己在开发过程中就遇到 好几次坑,尴尬. 生命周期 和Java里头一样一样的,如图 图片来源于网上哈, ...

  2. Eclipse切换SVN用户

    1. 点击windows --> preference --> Team --> SVN,查看当前的SVN接口. 2. 如果SVN接口是JavaHL,那么找到C:\Documents ...

  3. eclipse 突然 一直在loading descriptor for XXX (XXX为工程名)

    问题: eclipse 启动后,啥也不干,就一直在loading descriptor for XXX (XXX为工程名),,其他什么操作都不能操作. 如下图所示,保存文件也无法保存.  这个怎么办? ...

  4. Spring注入中byType和byName的总结

    1.首先,区分清楚什么是byType,什么是byName. <bean id="userServiceImpl" class="cn.com.bochy.servi ...

  5. ASP.NET MVC搭建项目后台UI框架—5、Demo演示Controller和View的交互

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  6. IP地址分类

  7. 十一个行为模式之备忘录模式(Memento Pattern)

    定义: 在不破坏原有封装的情况下,捕获一个对象的内部状态,并在对象之外保存.当对象出错或者无效是,可以根据该备忘录进行恢复. 结构图: Originator:原发类,被记录的对象,包含若干内部状态.一 ...

  8. Tomcat的下载和配置

    目录结构: // contents structure [-] 下载Tomcat 配置Tomcat 运行Tomcat 参考文章 下载Tomcat 读者可以到apache官网下载Tomcat.笔者下载的 ...

  9. Java泛型介绍——HashMap总结

    今天在编程中,需要使用到Hashmap来存储和传递数据,发现自己学习Java这么久,实际上对泛型依旧知之甚少,搜索整理了一下HashMap的使用. HashMap的声明初始化,因为泛型的原因,起两个参 ...

  10. Android系统的五种数据存储形式(一)

    Android系统有五种数据存储形式,分别是文件存储.SP存储.数据库存储.contentprovider 内容提供者.网络存储.其中,前四个是本地存储.存储的类型包括简单文本.窗口状态存储.音频视频 ...