-1

私は現在ポーカー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;
            ...

構文エラーを見つけることができませんが?

ところで、Cardは別のクラスです。

4

3 に答える 3

2

triplesエラーを示している場所に変数を割り当てることができない理由はありません。

ただし、次のように String 配列を割り当てる必要があります。

faces = new String[] { "Ace", "Deuce", "Three", "Four", "Five",
         "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"};
suits = new String[] { "Hearts", "Diamonds", "Clubs", "Spades" };
于 2012-09-09T20:22:47.217 に答える
1

配列値を初期化するための構文が正しくありません。

コンパイラが文句を言い始める前に追加の 4 行を待機している理由はわかりませんが、配列宣言は数行上では無効です。

    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" };
于 2012-09-09T20:22:59.320 に答える
1

ここで回答がすでに受け入れられていることは承知していますが、コンストラクターのパラメーターに依存しない場合、宣言の時点で変数を初期化する方が簡単であることを指摘したかったのです。

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" };

于 2012-09-09T20:57:42.613 に答える