2014-11-23 89 views
0

我把这段代码放在这里 - PlayingDeck类。它没有完成,正如你所看到的,但是会发生的是,在第17行右边的for循环中,我收到一条错误消息,说明PlayingCard声明和初始化不是一个声明。为什么这样?当我使用相同的语句将大括号添加到for循环时,错误消息消失。有人能解释为什么吗?我需要的只是两个括号,一个在开始处,另一个在for循环结尾......?for循环语法有什么问题?

谢谢

无法编译

--------代码,编译

public class PlayingDeck { 
    static int numberOfCards; 

    static { 
     numberOfCards = 52; 
    } 

    PlayingCard[] playingDeckArray; 

    PlayingDeck() { 
     playingDeckArray = new PlayingCard[numberOfCards]; 

     for (int currentCardNumber = 0; currentCardNumber > 51; currentCardNumber++) 
      PlayingCard currentCard = playingDeckArray[currentCardNumber]; 
    } 

    public static void main(String[] args) { 

    } 
} 

代码-----

public class PlayingDeck { 
    static int numberOfCards; 

    static { 
     numberOfCards = 52; 
    } 

    PlayingCard[] playingDeckArray; 

    PlayingDeck() { 
     playingDeckArray = new PlayingCard[numberOfCards]; 

     for (int currentCardNumber = 0; currentCardNumber > 51; currentCardNumber++){ 
      PlayingCard currentCard = playingDeckArray[currentCardNumber]; 
     } 
    } 

    public static void main(String[] args) { 

    } 
} 

回答

1

这是不允许的,因为如果不用花括号包装PlayingCard currentCard的声明没有范围。

顺便说一句,如果你想让你的循环做些什么,你应该改变条件为currentCardNumber < 51;

+0

它是公平地说,它有一个范围,但该范围是没用? – robbmj 2014-11-23 06:53:09

+0

甚至将条件更改为'currentCardNumber 2014-11-23 06:53:43

+0

我想这是有道理的,因为当我这样做循环时,一切都编译得很好: 'PlayingDeck(){ DeckArray = new PlayingCard [numOfSuits] [numOfRanks]; 对(INT currentSuitNumber = 1; currentSuitNumber <= numOfSuits; currentSuitNumber ++){ 对(INT currentRankNumber = 1; currentRankNumber <= numOfRanks; currentRankNumber ++) DeckArray [currentSuitNumber - 1] [currentRankNumber - 1] =新游戏牌(currentSuitNumber,currentRankNumber ); } }' 但是这里没有变量声明,所以我猜花括号是没有必要的。谢谢。 – nhooyr 2014-11-23 20:10:27

1

你的问题是在for loop

for (int currentCardNumber = 0; currentCardNumber > 51; currentCardNumber++) 
      PlayingCard currentCard = playingDeckArray[currentCardNumber]; 
} 

开幕大括号{丢失。

这是任何语言的标准,不仅是java。任何循环,无论是for loop还是while loopdo-while loop,或任何块如if-else,if-else if- else,switch都必须有开启和关闭花括号。

阅读此了解更多详情:Control Flow Statements in Java

而且阅读:Wikipedia - Indent Style