扑克牌洗牌
java 扑克牌 - 洗牌
背景
估计是想打扑克了吧
简述
生成一副扑克牌,没有大小王,然后洗牌,将洗牌后的结果输出
思路
扑克牌基本情况:一副牌有52张(没有大小王),四种类型:红桃(Hearts)、方块(Diamonds)、梅花(Clubs)、黑桃(Spades),每种类型有13张牌(A、2、3、4、5、6、7、8、9、10、J、Q、K)。
思路有点堵塞(感觉没有表达好):
1、把一张牌看作一个对象Card,该对象有类型属性type、大小属性size,即定义一个Card类,该类包含type和size属性
2、初始化扑克牌的类型type[] = {“H”, “D”, “C”, “S”}
初始化牌的大小size[] = {“A”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,“10”,“J”,“Q”,“K”}
3、用一个List</Card/>接收52张扑克牌
4、类型和大小进行双重循环生成扑克牌
5、打乱扑克牌(洗牌):集合类中有shuffle()方法
代码块
import java.util.*;
public class Pukepai {
public static void main(String args[]) {
/** 牌面类型 红心H、方块D、梅花C、黑桃S */
String type[] = {"H", "D", "C", "S"};
/** 牌面大小 */
String size[] = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
/** 存放52张牌 */
List<Card> list = new ArrayList();
for(int i = 0;i < type.length ; i++){
for (int j = 0; j < size.length; j++){
Card card = new Card();
card.setType(type[i]);
card.setSize(size[j]);
list.add(card);
}
}
System.out.println("shuffle before");
for (int j=0;j<list.size();j++){
System.out.printf(list.get(j).getType() + list.get(j).getSize() + " ");
if (j==list.size()-1){
System.out.println("");
}
}
/** 洗牌 */
collections.shuffle(list);
/** 输出洗牌结果 */
System.out.println("shuffle after");
for (int j=0;j<list.size();j++){
System.out.printf(list.get(j).getType() + list.get(j).getSize() + " ");
}
}
}
class Card {
private String type;
/**
* 牌面类型
*/
public void setType(String type){
this.type = type;
}
public String getType(){
return type;
}
/**
* 牌面大小
*/
private String size;
public void setSize(String size){
this.size = size;
}
public String getSize(){
return size;
}
}
测试结果
优化
1.输出不要用字母代替中文。
2.对象的输出可以通过重写类的tostring方法
3.重写card的构造函数,直接传成员变量来创建对象
4.有构造函数就不要创建临时变量
代码块
import java.util.*;
public class Pukepai {
public static void main(String args[]) {
/** 牌面类型 */
String type[] = {"红桃", "方块", "梅花", "黑桃"};
/** 牌面大小 */
String size[] = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
/** 存放52张牌 */
List<Card> list = new ArrayList();
for (int i = 0; i < type.length; i++) {
for (int j = 0; j < size.length; j++) {
list.add(new Card(type[i],size[j]));
}
}
System.out.println("洗牌前:");
for (int j = 0; j < list.size(); j++) {
System.out.printf(list.get(j).toString() + " ");
if (j == list.size() - 1) {
System.out.println("");
}
}
/** 洗牌 */
Collections.shuffle(list);
/** 输出洗牌结果 */
System.out.println("洗牌后:");
for (int j = 0; j < list.size(); j++) {
System.out.printf(list.get(j).toString() + " ");
}
}
}
class Card {
/**
* 牌面类型
*/
private String type;
/**
* 牌面大小
*/
private String size;
Card(String type, String size){
this.type = type;
this.size = size;
}
@Override
public String toString() {
stringbuilder sb = new StringBuilder();
sb.APPend(type);
sb.append(size);
return sb.toString();
}
}
测试结果
相关阅读
工程师为消费类设备开发了这种语言,并使其与当时适度的CPU兼容时保持了简单性。从那时起,这种面向对象的语言已用于创建简单到
JavaScript主要作用是什么呢?学习编程的同学对JavaScript并不陌生,JavaScript是前端技术中非常重要的内容,是网站搭建必不可少的
java.lang.UnsupportedClassVersionError
截图: 错误日志: Exception in thr
学了一段时间Java了,但是还是很菜,看到反射这一节的时候,就有点厌烦,看不下去了,过了一段时间后我又翻了回来,因为要学习后面的,所以反射
Java 混淆器就是给.class加密以防止反编译的工具 开源的 RetroGuard http://www.retrologic.com/ IBM的 JAX