黑马程序员技术交流社区

标题: 扑克 [打印本页]

作者: 邱峁    时间: 2012-11-12 18:41
标题: 扑克

public class PuKe
{
public class Card
{
static  int HongTao = 1;
static int FangKuai = 2;
static int CaoHua = 3;
static  int HeiTao = 4;
int point;
int type;
public Card()
{
  point = 1;
  type = HongTao;
}
public Card(int point, int type)
{
  this.point = point;
  this.type = type;
}
int getType(){
  return type;
}
int getPoint(){
  return point;
}
public void show(){
  if(type==HongTao) System.out.print("红桃");
  if(type==FangKuai) System.out.print("方块");
  if(type==CaoHua) System.out.print("草话");
  if(type==HeiTao) System.out.print("黑桃");
  System.out.println(point);
}
}
Card[] cards;
public PuKe()
{
  cards = new Card[52];  // 没有创建Card, 只是创建了数组
  for(int i=0; i<13; i++){
   cards[i] = new Card(i+1, Card.HeiTao);
  }
  for(int i=0; i<13; i++){
   cards[i+13] = new Card(i+1, Card.HongTao);
  }
  for(int i=0; i<13; i++){
   cards[i+13*2] = new Card(i+1, Card.CaoHua);
  }
  for(int i=0; i<13; i++){
   cards[i+13*3] = new Card(i+1, Card.FangKuai);
  }
}
public void xiPai()
{
  for(int i=0; i<1000; i++){
   int m = Math.random() ;
   int n = Math.random() ;
   Card t = cards[m];
   cards[m] = cards[n];
   cards[n] = t;
  }
}
public void faPai(PuKe.Card[] t1, PuKe.Card[] t2, PuKe.Card[] t3, PuKe.Card[] t4)
{
  for(int i=0; i<13; i++){
   t1[i] = cards[i];
  }
  for(int i=0; i<13; i++){
   t2[i] = cards[i+13];
  }
  for(int i=0; i<13; i++){
   t3[i] = cards[i+13*2];
  }
  for(int i=0; i<13; i++){
   t4[i] = cards[i+13*3];
  }
}
public static void main(String[] args)
{
  PuKe a = new PuKe();
  a.xiPai();
  PuKe.Card[] t1 = new PuKe.Card[13];
  PuKe.Card[] t2 = new PuKe.Card[13];
  PuKe.Card[] t3 = new PuKe.Card[13];
  PuKe.Card[] t4 = new PuKe.Card[13];
  a.faPai(t1, t2, t3, t4);
  for(int i=0; i<t2.length; i++){
   t2[i].show();
  }
}
}
我想要13张不重复的牌   
这是哪错了  
作者: 方建平    时间: 2012-11-12 18:50
下面的代码有问题吧,Math.random()得到的是0到1.0之间小数啊!
int m = Math.random() ;
int n = Math.random() ;

作者: 方建平    时间: 2012-11-12 18:55
static int HongTao = 1;
static int FangKuai = 2;
static int CaoHua = 3;
static int HeiTao = 4;
此外在内部类中不能有static类成员吧
作者: 小灰灰    时间: 2012-11-12 19:02
本帖最后由 都彭韬 于 2012-11-12 19:04 编辑
  1. public class PuKe {

  2.         Card[] cards;

  3.         public PuKe() {
  4.                 cards = new Card[52]; // 没有创建Card, 只是创建了数组
  5.                 for (int i = 0; i < 13; i++) {
  6.                         cards[i] = new Card(i + 1, Card.HeiTao);
  7.                 }
  8.                 for (int i = 0; i < 13; i++) {
  9.                         cards[i + 13] = new Card(i + 1, Card.HongTao);
  10.                 }
  11.                 for (int i = 0; i < 13; i++) {
  12.                         cards[i + 13 * 2] = new Card(i + 1, Card.CaoHua);
  13.                 }
  14.                 for (int i = 0; i < 13; i++) {
  15.                         cards[i + 13 * 3] = new Card(i + 1, Card.FangKuai);
  16.                 }
  17.         }

  18.         public void xiPai() {
  19.                 for (int i = 0; i < 1000; i++) {
  20.                         int m = (int) Math.random();
  21.                         int n = (int) Math.random();
  22.                         Card t = cards[m];
  23.                         cards[m] = cards[n];
  24.                         cards[n] = t;
  25.                 }
  26.         }

  27.         public void faPai(PuKe.Card[] t1, PuKe.Card[] t2, PuKe.Card[] t3, PuKe.Card[] t4) {
  28.                 for (int i = 0; i < 13; i++) {
  29.                         t1[i] = cards[i];
  30.                 }
  31.                 for (int i = 0; i < 13; i++) {
  32.                         t2[i] = cards[i + 13];
  33.                 }
  34.                 for (int i = 0; i < 13; i++) {
  35.                         t3[i] = cards[i + 13 * 2];
  36.                 }
  37.                 for (int i = 0; i < 13; i++) {
  38.                         t4[i] = cards[i + 13 * 3];
  39.                 }
  40.         }

  41.         public static void main(String[] args) {
  42.                 PuKe a = new PuKe();
  43.                 a.xiPai();
  44.                 Card[] t1 = new Card[13];
  45.                 Card[] t2 = new Card[13];
  46.                 Card[] t3 = new Card[13];
  47.                 Card[] t4 = new Card[13];
  48.                 a.faPai(t1, t2, t3, t4);
  49.                 for (int i = 0; i < t2.length; i++) {
  50.                         t2[i].show();
  51.                 }
  52.         }
  53.         
  54.         class Card
  55.         {
  56.                 static final  int HongTao = 1;
  57.                 static final int FangKuai = 2;
  58.                 static final int CaoHua = 3;
  59.                 static final  int HeiTao = 4;
  60.         int point;
  61.         int type;
  62.         public Card()
  63.         {
  64.           point = 1;
  65.           type = HongTao;
  66.         }
  67.         public Card(int point, int type)
  68.         {
  69.           this.point = point;
  70.           this.type = type;
  71.         }
  72.         int getType(){
  73.           return type;
  74.         }
  75.         int getPoint(){
  76.           return point;
  77.         }
  78.         public void show(){
  79.           if(type==HongTao) System.out.print("红桃");
  80.           if(type==FangKuai) System.out.print("方块");
  81.           if(type==CaoHua) System.out.print("草话");
  82.           if(type==HeiTao) System.out.print("黑桃");
  83.           System.out.println(point);
  84.         }
  85.         }
  86. }
复制代码
你的代码 问题有很多啊,我已经修复好了,你运行一下吧
运行成功了

内部类的静态变量要改错 static final的,还有就是
int m = (int) Math.random();
要转换一下吧









欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2