应为Java错误

应为Java错误,java,compiler-errors,Java,Compiler Errors,我目前正在做一个扑克java游戏练习,我遇到了一个我无法理解的丑陋错误。这一定是某种语法错误,因为编译器抛出了100个语法错误。但我只是不知道错误在哪里 import java.util.Random; public class Poker { private Card[] deck; private Card[] hand; private int currentCard; private int numbers[], triples, couples;

我目前正在做一个扑克java游戏练习,我遇到了一个我无法理解的丑陋错误。这一定是某种语法错误,因为编译器抛出了100个语法错误。但我只是不知道错误在哪里

import java.util.Random;

public class Poker
{
    private Card[] deck;
    private Card[] hand;
    private int currentCard;
    private int numbers[], triples, couples;
    private String faces[], suits[];

    private boolean flushOnHand, fourOfAKind, isStraight;
    private static final int NUMBER_OF_CARDS = 52;

    private static final Random randomNumbers = new Random();

    Poker()
    {
        faces = { "Ace", "Deuce", "Three", "Four", "Five",
            "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"};
        suits = { "Hearts", "Diamonds", "Clubs", "Spades" };

        numbers = new int[ 13 ];

        deck = new Card[ NUMBER_OF_CARDS ];

        triples = 0; // right here's where the compiler starts complaining
        couples = 0;
            ...
虽然我不能发现任何语法错误


顺便说一句,卡是一个单独的类。

没有理由不能在指示错误的位置分配变量三元组

但是,您需要按如下方式分配字符串数组:

faces = new String[] { "Ace", "Deuce", "Three", "Four", "Five",
         "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"};
suits = new String[] { "Hearts", "Diamonds", "Clubs", "Spades" };
初始化数组值的语法不正确

我不知道为什么编译器在开始抱怨之前还要再等待四行,但是上面几行的数组声明是无效的

    faces = { "Ace", "Deuce", "Three", "Four", "Five",
        "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"};
    suits = { "Hearts", "Diamonds", "Clubs", "Spades" };
应该是这样的

    faces = new String[] { "Ace", "Deuce", "Three", "Four", "Five",
        "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"};
    suits = new String[] { "Hearts", "Diamonds", "Clubs", "Spades" };
只有在声明的同一行上初始化第一个结构时,才能使用它,如下所示:

private String faces[] = { "Ace", "Deuce", "Three", "Four", "Five",
        "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"};
private String suits[] = { "Hearts", "Diamonds", "Clubs", "Spades" };

我意识到这里已经接受了一个答案,但我想指出的是,如果变量不依赖于构造函数的任何参数,那么在声明点初始化变量会更容易

public class Poker
{
    private static final int NUMBER_OF_CARDS = 52;
    private Card[] deck = new Card[ NUMBER_OF_CARDS ];
    private int numbers[] = new int[ 13 ]
    private int triples = 0;
    private int couples = 0;
    private String faces[] = { "Ace", "Deuce", "Three", "Four", "Five", "Six", "Seven",
                               "Eight", "Nine", "Ten", "Jack", "Queen", "King"};
    private String suits[] = { "Hearts", "Diamonds", "Clubs", "Spades" };

等。

删除行,直到错误消失。那你知道是什么引起的-1和太本地化,如果需要的话,不提供遵循上述技术的最小案例。提示:尝试删除构造函数的前两行。通过普通{..}进行数组初始化是一种特殊的只声明的构造。您使用的编译器是什么?它不会在面上给您错误={line?这就是我的编译器给出错误的地方。我得到一个错误数组常量只能在faces=和suites=行上的初始值设定项中使用。我使用的是Java 7。你得到了什么错误?@ErickRobertson-Java编译器在faces={,但是,至少在Java 6中,它在OP指示的行上也给出了一个虚假错误。当faces和suits赋值被修复时,关于预期标识符的错误也会消失。教训是:首先修复第一个错误。然后其他错误可能会自行消失。您只能在不使用字符串[]的情况下声明在变量声明中。