mcc/Test.java
package mcc;
//扑克类(一副扑克)
class Poker
{
//内部类Card
public class Card
{
private String suite; // 花色
private int face; // 点数
public Card(String suite, int face)
{
this.suite = suite;
this.face = face;
}
@Override
public String toString()
{
String faceStr = "";
switch (face)
{
case 1:
faceStr = "A";
break;
case 11:
faceStr = "J";
break;
case 12:
faceStr = "Q";
break;
case 13:
faceStr = "K";
break;
default:
faceStr = String.valueOf(face);
}
return suite + faceStr;
}
}
//Poker类 成员
private static String[] suites = { "黑桃", "红桃", "梅花", "方块" };
private static int[] faces = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 };
private Card[] cards;
//构造器
public Poker()
{
//构造52个Card对象 存放在cards 数组中
cards = new Card[52];
for (int i = 0; i < suites.length; i++)
{
for (int j = 0; j < faces.length; j++)
{
cards[i * 13 + j] = new Card(suites[i], faces[j]);
}
}
}
//洗牌 (随机乱序)
public void shuffle()
{
int len = cards.length;
for (int i = 0; i < len; i++)
{
int index = (int) (Math.random() * len);
Card temp = cards[index];
cards[index] = cards[i];
cards[i] = temp;
}
}
//获取一个Card 对象
public Card getCard(int index)
{
return cards[index];
}
}
public class Test
{
public static void main(String[] args)
{
Poker poker = new Poker();
poker.shuffle(); // 洗牌
Poker.Card c1 = poker.getCard(0); // 发第一张牌
// 对于非静态内部类Card
// 只有通过其外部类Poker对象才能创建Card对象
Poker.Card c2 = poker.new Card("红心", 1); // 自己创建一张牌
System.out.println(c1); // 洗牌后的第一张
System.out.println(c2); // 打印: 红心A
}
}