首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

小弟我的程序很乱很乱,哪位高手帮小弟我整理一下

2012-01-09 
我的程序很乱很乱,谁帮我整理一下我些了个程序,代码是一点一点加上去的,最后好乱啊,谁可以帮我整理一下,比

我的程序很乱很乱,谁帮我整理一下
我些了个程序,代码是一点一点加上去的,最后好乱啊,谁可以帮我整理一下,比如将它的分成几个功能块啊什么的,让人看上去舒服点。还有麻烦帮我优化一下代码,提高一点效率啊!现在我自己看着看着也晕了


public   class   bj123
{
    static   class   Card
      {
                    String   value;
                    char   color;
                    int   num;
                    int   bijiao;
               
        public   Card(char   color,int   bijiao,String   value,int   num)
                {
                    this.color=color;
                    this.bijiao=bijiao;
                    this.value=value;
                    this.num=num;
                }
      }


      static   char[]   colors={6,3,5,4};
      static   int   bijiao[]={4,3,2,1};
      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( "洗牌前,牌的顺序为: ");
              for(int   i=0;i <=3;i++)
                    for(int   j=0;j <13;j++,k++)
                    {
                          porke[k]=new   Card(colors[i],bijiao[i],values[j],nums[j]);
                          System.out.print(porke[k].color+porke[k].value+ "   ");
                      }

              System.out.println();
              int   a[]=new   int[52];
              for   (int   i=0;i <a.length;i++)
                        {
                              a[i]=(int)(Math.random()*52);
                                for(int   j=0;j <i;j++)
                                        if(a[j]==a[i])
                                          i=i-1;


                                    }
              System.out.println( "洗牌后,牌的顺序如下: ");
              System.out.println();

              int   c=0,d=3;
              for(int   i=0;i <porke.length;i++)
                    {
                        int   m=a[i];
                        System.out.print(porke[m].color+porke[m].value+ "   ");
                        if(i> 0&&i%d==c)
                                {
                                    System.out.println();
                                    c++;
                                    d+=3;
                                }
                    }
            System.out.println();


                  int   x=0;
                  int   i=0;
                  Card   s[]=new   Card[53];
                  for(int   j=0;j <4;j++)
                      {
                        for(int   k1=0;k1 <porke.length;k1++)
                            {    
                                  int   m=a[k1];
                                  if(k1%4==x)
                                    {
                                        i++;
                                        s[i]=new   Card(porke[m].color,porke[m].bijiao,porke[m].value,porke[m].num);
                                      }
                              }
                      x++;
                      }


            System.out.println();


            int   a1=1,a2,c1=13,b=0;
            while(b <4){
                                      for(;a1 <=c1;a1++)
                                      for(   a2=a1+1;a2 <=c1;a2++)
                                      {
                                            if(s[a1].num <s[a2].num)
                                                  {
                                                  char   temp1=s[a1].color;
                                                  s[a1].color=s[a2].color;
                                                  s[a2].color=temp1;
                                                  int   temp3=s[a1].bijiao;s[a1].bijiao=s[a2].bijiao;
                                                  s[a2].bijiao=temp3;
                                                  String     temp=s[a1].value;
                                                  s[a1].value=s[a2].value;
                                                  s[a2].value=temp;
                                                  int   temp2=s[a1].num;
                                                  s[a1].num=s[a2].num;
                                                  s[a2].num=temp2;
                                                  }      
                                          if((s[a1].num==s[a2].num)&&(s[a1].bijiao <s[a2].bijiao))


                                                {
                                                  char   temp1=s[a1].color;
                                                  s[a1].color=s[a2].color;
                                                  s[a2].color=temp1;
                                                  int   temp3=s[a1].bijiao;s[a1].bijiao=s[a2].bijiao;
                                                  s[a2].bijiao=temp3;
                                                }
                                      }
                                  b++;
                                  c1=c1+13;
                              }


            System.out.print( "将洗好牌按次序发给四家并按花色与点数从大到小排列, ");
            System.out.println( "各家的牌如下: ");
            String   position[]={ "东 ", "南 ", "西 ", "北 "};
            int   b2=0;
            for(int   a3=1;a3 <53;a3++)
                    {     if(a3%13==1)
                            {
                            System.out.println(position[b2]+ "家的牌为: ");
                            b2++;
                            }
                          System.out.print(s[a3].color+s[a3].value+ "   ");
                          if(a3%13==0)System.out.println();
                    }
        }
}


各位拜托了,不胜感激!!!

[解决办法]
/*
*我把代码做了简单的重构,应该比较清楚了吧
*/
public class bj123 {
static class Card {
String value;



char color;

int num;

int bijiao;

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

static char[] colors = { 6, 3, 5, 4 };

static int bijiao[] = { 4, 3, 2, 1 };

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;

clearCard(porke, k);

int a[] = new int[52];

getCardSore(a);

soreColor(porke, a);
}


private static void soreColor(Card[] porke, int[] a) {
int c = 0, d = 3;
for (int i = 0; i < porke.length; i++) {
int m = a[i];
System.out.print(porke[m].color + porke[m].value + " ");
if (i > 0 && i % d == c) {
System.out.println();
c++;
d += 3;
}
}
System.out.println();

int x = 0;
int i = 0;
Card s[] = new Card[53];
for (int j = 0; j < 4; j++) {
for (int k1 = 0; k1 < porke.length; k1++) {
int m = a[k1];
if (k1 % 4 == x) {
i++;
s[i] = new Card(porke[m].color, porke[m].bijiao,
porke[m].value, porke[m].num);
}
}
x++;
}
System.out.println();

int a1 = 1, a2, c1 = 13, b = 0;
while (b < 4) {
for (; a1 <= c1; a1++)
for (a2 = a1 + 1; a2 <= c1; a2++) {
if (s[a1].num < s[a2].num) {
char temp1 = s[a1].color;
s[a1].color = s[a2].color;
s[a2].color = temp1;
int temp3 = s[a1].bijiao;
s[a1].bijiao = s[a2].bijiao;
s[a2].bijiao = temp3;
String temp = s[a1].value;
s[a1].value = s[a2].value;
s[a2].value = temp;
int temp2 = s[a1].num;
s[a1].num = s[a2].num;
s[a2].num = temp2;
}
if ((s[a1].num == s[a2].num)
&& (s[a1].bijiao < s[a2].bijiao)) {
char temp1 = s[a1].color;
s[a1].color = s[a2].color;
s[a2].color = temp1;
int temp3 = s[a1].bijiao;
s[a1].bijiao = s[a2].bijiao;
s[a2].bijiao = temp3;
}
}
b++;
c1 = c1 + 13;
}

System.out.print( "将洗好牌按次序发给四家并按花色与点数从大到小排列, ");
System.out.println( "各家的牌如下: ");
String position[] = { "东 ", "南 ", "西 ", "北 " };
int b2 = 0;
for (int a3 = 1; a3 < 53; a3++) {
if (a3 % 13 == 1) {
System.out.println(position[b2] + "家的牌为: ");
b2++;
}
System.out.print(s[a3].color + s[a3].value + " ");
if (a3 % 13 == 0)
System.out.println();
}
}

private static void getCardSore(int[] a) {
for (int i = 0; i < a.length; i++) {
a[i] = (int) (Math.random() * 52);
for (int j = 0; j < i; j++)
if (a[j] == a[i])
i = i - 1;
}
System.out.println( "洗牌后,牌的顺序如下: ");
System.out.println();
}


private static void clearCard(Card[] porke, int k) {
System.out.println( "洗牌前,牌的顺序为: ");

for (int i = 0; i <= 3; i++)


for (int j = 0; j < 13; j++, k++) {
porke[k] = new Card(colors[i], bijiao[i], values[j], nums[j]);
System.out.print(porke[k].color + porke[k].value + " ");
}

System.out.println();
}
}

热点排行