1. ホーム
  2. java

[解決済み] Javaでオブジェクトの配列を初期化する方法

2023-06-23 06:26:39

質問

BlackJackゲーム用にプレイヤーオブジェクトの配列を初期化したい。intの配列や文字列の配列のようなプリミティブなオブジェクトを初期化する様々な方法についてたくさん読みましたが、私がここでやろうとしていること(下記参照)にその概念を取り入れることができません。初期化されたプレイヤー・オブジェクトの配列を返したいのです。作成するプレイヤー・オブジェクトの数は、ユーザーに指示する整数値です。コンストラクタが整数値を受け取り、それに応じてプレーヤーに名前を付け、プレーヤー・オブジェクトのいくつかのメンバ変数を初期化することができると考えていました。私は近いと思うが、まだかなり混乱もしている。

static class Player
{
    private String Name;
    private int handValue;
    private boolean BlackJack;
    private TheCard[] Hand;

    public Player(int i)
    {
        if (i == 0)
        {
            this.Name = "Dealer"; 
        }
        else
        {
            this.Name = "Player_" + String.valueOf(i);
        }
        this.handValue = 0;
        this.BlackJack = false;
        this.Hand = new TheCard[2];
    } 
}
private static Player[] InitializePlayers(int PlayerCount)
{ //The line below never completes after applying the suggested change
    Player[PlayerCount] thePlayers;
    for(int i = 0; i < PlayerCount + 1; i++)
    {
        thePlayers[i] = new Player(i);
    }
    return thePlayers;
}

EDIT - アップデイト。 私はあなたの提案を理解したように、これを変更した後、私が取得しているものは次のとおりです。

Thread [main] (Suspended)   
    ClassNotFoundException(Throwable).<init>(String, Throwable) line: 217   
    ClassNotFoundException(Exception).<init>(String, Throwable) line: not available 
    ClassNotFoundException.<init>(String) line: not available   
    URLClassLoader$1.run() line: not available  
    AccessController.doPrivileged(PrivilegedExceptionAction<T>, AccessControlContext) line: not available [native method]   
    Launcher$ExtClassLoader(URLClassLoader).findClass(String) line: not available   
    Launcher$ExtClassLoader.findClass(String) line: not available   
    Launcher$ExtClassLoader(ClassLoader).loadClass(String, boolean) line: not available 
    Launcher$AppClassLoader(ClassLoader).loadClass(String, boolean) line: not available 
    Launcher$AppClassLoader.loadClass(String, boolean) line: not available  
    Launcher$AppClassLoader(ClassLoader).loadClass(String) line: not available  
    BlackJackCardGame.InitializePlayers(int) line: 30   
    BlackJackCardGame.main(String[]) line: 249  

どのように解決するのですか?

ほとんど問題ありません。ただ、あります。

Player[] thePlayers = new Player[playerCount + 1];

そしてループをさせる。

for(int i = 0; i < thePlayers.length; i++)

また、Javaの慣例として、メソッドや変数の名前は小文字で始めることになっていることに注意してください。

更新:メソッドをクラス本体の中に入れてください。