Java中不允许使用变量声明

Java中不允许使用变量声明,java,constructor,Java,Constructor,这是我学校项目中的一个java扑克项目 首先,定义了Card类 class Card { /* constant suits and ranks */ static final String[] Suit = {"Clubs", "Diamonds", "Hearts", "Spades" }; static final String[] Rank = {"","A","2","3","4","5","6","7","8","9","10","J","Q","K"}; /* Data fie

这是我学校项目中的一个java扑克项目

首先,定义了Card类

class Card {

/* constant suits and ranks */
static final String[] Suit = {"Clubs", "Diamonds", "Hearts", "Spades" };
static final String[] Rank = {"","A","2","3","4","5","6","7","8","9","10","J","Q","K"};

/* Data field of a card: rank and suit */
private int cardRank;  /* values: 1-13 (see Rank[] above) */
private int cardSuit;  /* values: 0-3  (see Suit[] above) */

/* Constructor to create a card */
/* throw MyPlayingCardException if rank or suit is invalid */
public Card(int rank, int suit) throws MyPlayingCardException { 
if ((rank < 1) || (rank > 13))
    throw new MyPlayingCardException("Invalid rank:"+rank);
else
        cardRank = rank;
if ((suit < 0) || (suit > 3))
    throw new MyPlayingCardException("Invalid suit:"+suit);
else
        cardSuit = suit;
}

/* Accessor and toString */
/* You may impelemnt equals(), but it will not be used */
public int getRank() { return cardRank; }
public int getSuit() { return cardSuit; }
public String toString() { return Rank[cardRank] + " " + Suit[cardSuit]; }
类卡{
/*不变的诉讼和等级*/
静态最终字符串[]套装={“梅花”、“钻石”、“红心”、“黑桃”};
静态最终字符串[]秩={”、“A”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“10”、“J”、“Q”、“K”};
/*卡的数据字段:等级和等级*/
private int cardRank;/*值:1-13(参见上面的秩[])*/
private int cardSuit;/*值:0-3(参见上文的Suit[]*/
/*构造函数创建一张卡片*/
/*如果等级或等级无效,则抛出MyPlayingCardException*/
公共卡(整数等级,整数套装)抛出MyPlayingCardException{
如果((秩<1)| |(秩>13))
抛出新的MyPlayingCardException(“无效排名:+rank”);
其他的
cardRank=等级;
如果((诉讼<0)| |(诉讼>3))
抛出新的MyPlayingCardException(“无效诉讼:+诉讼”);
其他的
cardSuit=西装;
}
/*存取器和toString*/
/*您可以强制使用equals(),但不会使用它*/
public int getRank(){return cardRank;}
public int getSuit(){return cardSuit;}
公共字符串toString(){return Rank[cardRank]+“”+Suit[cardSuit];}
然后,我试图定义Deck类,但出现了一些错误

class Decks {

/* this is used to keep track of original n*52 cards */
private List<Card> originalDecks;   

/* this starts with n*52 cards deck from original deck   */
/* it is used to keep track of remaining cards to deal */
/* see reset(): it resets dealDecks to a full deck      */
private List<Card> dealDecks;

/* number of decks in this object */
private int numberDecks;

  public Decks()
{
    ArrayList<Card> originalDecks = new ArrayList<Card>(52);
    ArrayList<Card> dealDecks = new ArrayList<Card>(52); 

     Card card = new Card(j,i);   //Error

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

              originalDecks.add(card);   //Error

    dealDecks.addAll(originalDecks); 


}
类组{
/*这用于跟踪原始n*52卡*/
私人名单原件;
/*这从原始牌组的n*52张牌组开始*/
/*它用于跟踪要处理的剩余卡*/
/*请参阅reset():它将DealDealDeck重置为全甲板*/
私人名单;
/*此对象中的甲板数*/
私人国际号码;
公共甲板()
{
ArrayList originalDecks=新的ArrayList(52);
ArrayList dealDecks=新的ArrayList(52);
卡片=新卡片(j,i);//错误
对于(int i=0;i对于该语句

Card card = new Card(j,i);
范围中没有变量
i
j
,因此它是合法的编译错误

您希望将它们移动到内部循环中

 for (int i=0; i<=3; i++)  {
        for (int j=0; j<= 13; j++) {              
            Card card = new Card(j,i);
            originalDecks.add(card); 

        }
  }
for(int i=0;i用于此语句

Card card = new Card(j,i);
范围中没有变量
i
j
,因此它是合法的编译错误

您希望将它们移动到内部循环中

 for (int i=0; i<=3; i++)  {
        for (int j=0; j<= 13; j++) {              
            Card card = new Card(j,i);
            originalDecks.add(card); 

        }
  }

for(int i=0;i,因为您在定义
i
j
之前尝试创建
卡。此外,请使用大括号

// Card card = new Card(j,i);
for (int i=0; i<=3; i++) {  
    for (int j=0; j<= 13; j++) {
        Card card = new Card(j,i);
        originalDecks.add(card); 
    }
}
//卡片=新卡片(j,i);

对于(int i=0;i,因为您试图在定义
i
j
之前创建
卡。此外,请使用大括号

// Card card = new Card(j,i);
for (int i=0; i<=3; i++) {  
    for (int j=0; j<= 13; j++) {
        Card card = new Card(j,i);
        originalDecks.add(card); 
    }
}
//卡片=新卡片(j,i);
对于(int i=0;i大多数运行时错误,“此处不允许变量声明”是因为缺少大括号

例如:-

public class Creator
{
    public static void main(String[] args)
    {
        for(int i=0;i<100;i++)
        Creature creature=new Creature(); // Error 

        System.out.println(Creature.numCreated());

    }
}
公共类创建者
{
公共静态void main(字符串[]args)
{
对于(int i=0;i大多数运行时错误,“此处不允许变量声明”是因为缺少大括号

例如:-

public class Creator
{
    public static void main(String[] args)
    {
        for(int i=0;i<100;i++)
        Creature creature=new Creature(); // Error 

        System.out.println(Creature.numCreated());

    }
}
公共类创建者
{
公共静态void main(字符串[]args)
{

对于(int i=0;iI尝试将其移入,但它显示了新错误:“此处不允许变量声明”。@LijieZhou您添加了大括号吗?这解决了问题。非常感谢您的快速回复!我尝试将其移入,但它显示了新错误:“此处不允许变量声明”@LijieZhou你加了支架吗?解决了问题。非常感谢你的快速回复!