应为Java错误
我目前正在做一个扑克java游戏练习,我遇到了一个我无法理解的丑陋错误。这一定是某种语法错误,因为编译器抛出了100个语法错误。但我只是不知道错误在哪里应为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;
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赋值被修复时,关于预期标识符的错误也会消失。教训是:首先修复第一个错误。然后其他错误可能会自行消失。您只能在不使用字符串[]的情况下声明在变量声明中。