我的数组怎么引用不了?

usabbs09 2007-04-10 12:41:00
有这样一个程序:
public class bijiao
{
static class Card
{
String value;
String color;
int num;

public Card(String color,String value,int num)
{
this.color=color;
this.value=value;
this.num=num;
}
}

static String[] colors={"黑桃","红桃","梅花","方块"};
static String[] values= {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
static int[] nums={12,13,1,2,3,4,5,6,7,8,9,10,11};

public static void main(String arg[])
{

Card porke[]=new Card[52];int k=0;
System.out.println("未洗牌前,牌的顺序为:");
System.out.println();
for(int i=0;i<=3;i++)
{
for(int j=0;j<13;j++,k++)
{
porke[k]=new Card(colors[i],values[j],nums[j]);
System.out.print(porke[k].color+porke[k].value+" ");
}
}

int a[]=new int[52];
for (int p=0;p<a.length;p++)
{
a[p]=(int)(Math.random()*52);
for(int q=0;q<p;q++)
if(a[q]==a[p])
p=p-1;
}
System.out.println("洗牌后,牌的顺序如下:");
System.out.println(); int z1=0;
for(int x=0;x<porke.length;x++)
{ int m=a[x];
System.out.print(porke[m].color+porke[m].value+" ");
if(x==12)System.out.println();
if(x==25)System.out.println();
if(x==38)System.out.println();
if(x==51)System.out.println();
}
System.out.println();
System.out.println("将洗过的牌按次序分发给东南西北四家,各家的牌如下:");
int z=0;
for(int a1=0;a1<4;a1++)
{
for(int x=0;x<porke.length;x++)
{ int m=a[x];
if(x%4==z)
{ int i=0;i++;Card s[]=new Card[13];
if(x==0){System.out.println("东家的牌为:");}
if(x==1){System.out.println("南家的牌为:");}
if(x==2){System.out.println("西家的牌为:");}
if(x==3){System.out.println("北家的牌为:");}
s[i]=new Card(porke[m].color,porke[m].value,porke[m].num);
System.out.print(s[i].color+s[i].value+" ");
}
}
System.out.println();z++;
}
}
}





在最后我想将东家的牌按num的大小排序显示出来,可是我试图比较s[I].num与s[i+1].num时,却出现了错误,我刚学java,发现不了错误,请大虾们帮我看下哪里有问题,不胜感激!!!!!真的!!!!!
...全文
359 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
loyoveui 2007-04-11
  • 打赏
  • 举报
回复
还是没看懂
usabbs09 2007-04-10
  • 打赏
  • 举报
回复
呵呵……已经好了,没事了
usabbs09 2007-04-10
  • 打赏
  • 举报
回复
我的意思是在程序的最后加一段,让东家的牌按num的值从大到小排列
maco21 2007-04-10
  • 打赏
  • 举报
回复
楼上的,人家是模拟我们真人玩牌,按顺序拿牌!
家有萌宝V 2007-04-10
  • 打赏
  • 举报
回复
而且你这部分的效率也太低了,在你给东家发牌的时候非要检查x是否是0,4,8,12,16,20,24,28,32,36,40,44,48而x为中间的直即使不是程序还是要检查,这样不是高效率的程序,你想,既然牌都已经洗好了,那就是随机的了,可以顺次发13张牌,你再去没隔3张发一张
有什么意义呢!?
家有萌宝V 2007-04-10
  • 打赏
  • 举报
回复
if(x%4==z)
{ int i=0;i++;Card s[]=new Card[13];
if(x==0){System.out.println("东家的牌为:");}
if(x==1){System.out.println("南家的牌为:");}
if(x==2){System.out.println("西家的牌为:");}
if(x==3){System.out.println("北家的牌为:");}

x应该是z吧!!
liltos 2007-04-10
  • 打赏
  • 举报
回复
哪行代码是比较?没看到。。。
malligator 2007-04-10
  • 打赏
  • 举报
回复
i<length - 1
butnet 2007-04-10
  • 打赏
  • 举报
回复
什么异常贴出来.
注意数组越界没有!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧