import java.util.*;
public class ApplycationCard
{
public static void main(String[] args)
{Deck deckcards=new Deck();
deckcards.riffleCard();
deckcards.dealCard();}
}
一个类;
import java.util.*;
public class Deck
{public Card[] cards;
public Deck(){
cards=new Card[52];
for(int i=0;i<4;i++)
{
for(int j=1;j<14;j++)
{
cards[i*13+j-1]=new Card(Suit.values()[i],Rank.values()[j]);
}
}
for(Card e:cards)
System.out.println(e.toString());
}public void riffleCard()
{
Card[] tempCard=new Card[52];
for(int i=52;i>=1;i--)
{int temp=(int)Math.round((Math.random()*100))%i;
tempCard[52-i]=cards[temp];
cards[temp]=cards[i-1];
}
for(int i=0;i<52;i++)
cards[i]=tempCard[i];}public void dealCard()
{
Card[] tempOne=new Card[13];
Card[] tempTwo=new Card[13];
Card[] tempThree=new Card[13];
Card[] tempFour=new Card[13];for(int i=0;i<52;)
{
tempOne[i/4]=cards[i];
tempTwo[(i-1)/4]=cards[i+1];
tempThree[(i-2)/4]=cards[i+2];
tempFour[(i-3)/4]=cards[i+3];
i+=4;
}
for(Card e:tempOne)
System.out.println(e.toString());
for(Card e:tempTwo)
System.out.println(e.toString());
for(Card e:tempThree)
System.out.println(e.toString());
for(Card e:tempFour)
System.out.println(e.toString());}
}
一个类;import java.util.*;enum Suit{CLUBS,SPADE,DIAMONDS,HEARTS}
enum Rank{Ace,Deuce,Three,Four,Five,Six,Seven,Eight,Nine,Ten,Jack,Queen,King}
public class Card
{
public Suit suit;
public Rank rank;
public void Card()
{}public Card(Suit newsuit,Rank newrank)
{
suit=newsuit;
rank=newrank;
} public String toString()
{
return "The"+rank+"of"+suit+"s";
}}
一个类;
运行,mian出错Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException,编译正常通过。我是新手,希望高手解答。(一副牌,出去大小王,分给四个人)

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主截止到2008-06-19 09:59:23的汇总数据:
    注册日期:2007-9-12
    上次登录:2008-6-19
    发帖数:1
    结贴数:0
    结贴率: 0.00%
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    for(int i=52;i>=1;i--) 
    ==>
    for(int i=51;i>=0;i--) 
    你原来没有学过C/C++没有学过js
      

  3.   

    for(int j=1;j <14;j++) 

    cards[i*13+j-1]=new Card(Suit.values()[i],Rank.values()[j]); //此行

    是这一行报错,这里是吧int(i和j)转换成enum(Suit和Rank),但不知道是如何转换。
      

  4.   

    没看出那行错误在哪,但下面这行是有错误的
    for(int i=52;i>=1;i--) 
      

  5.   


    修改1:
    cards[i*13+j-1]=new Card(Suit.values()[i],Rank.values()[j - 1]); 修改2:
    for(int i=0;i <52;) 

    tempOne[i/4]=cards[i]; 
    tempTwo[(i-1)/4]=cards[i+1]; 
    tempThree[(i-2)/4]=cards[i+2]; 
    tempFour[(i-3)/4]=cards[i+3]; 
    i+=4; 
    }
      

  6.   

    对于tempTwo,tempThree,tempFour都是[i / 4]
      

  7.   

    感谢fengwx007 ,在你的提示下,我把问题解决了。但是出现另一个问题,cards[temp]=cards[i-1]; 这条语句有错误,需要改cards[temp]=cards[i]; 就可以了,问题已经解决。谢谢大家!