估计是想打扑克了吧
生成一副扑克牌,没有大小王,然后洗牌,将洗牌后的结果输出
扑克牌基本情况:一副牌有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接收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 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
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 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();
}
}