2014-11-23 2 views
0

У меня здесь есть эта часть кода - класс PlayingDeck. Это не сделано, как вы видите, но происходит то, что в строке 17 «Прямо в цикле for» появляется сообщение об ошибке с сообщением PlayingCard, а инициализация не является выражением. Почему так? Когда я добавляю фигурные скобки в цикл 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 не имеет границ, если вы не обертываете его фигурными скобками.

BTW, если вы хотите, чтобы ваша петля что-то сделала, вы, вероятно, должны изменить условие на currentCardNumber < 51;

+0

Справедливо сказать, что она имеет объем, но сфера бесполезна? – robbmj

+0

Или даже измените условие на 'currentCardNumber

+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

1

Ваша проблема заключается в for loop

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

открывающей фигурной скобкой { отсутствует.

Это стандарт для любого языка, а не только для Java. Любой цикл, будь то for loop, или while loop или do-while loop, или любой блок, такой как if-else, if-else if- else, switch должен иметь открывающиеся и закрывающиеся фигурные скобки.

Прочитайте это для более подробной информации: Control Flow Statements in Java

прочитать Кроме того, это: Wikipedia - Indent Style