Java里面怎么样初始化一个对象数组| Java Debug 笔记

202 阅读1分钟

本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看 活动链接

Java里面怎么样初始化一个对象数组

我想初始化一个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 - UPDATE: Here is what I am getting after changing this as I understood your suggestion:

编辑-更新:在我理解了你们的建议以后,我更改了我的代码,就产生了这样:

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规范规定方法和变量的名称应该以小写字母开头。

更新:将方法放在类主体中。

文章翻译自Stack Overflow:stackoverflow.com/questions/5…