java - 如何在 Java 中初始化对象数组

标签 java arrays object initialization

我想为 BlackJack 游戏初始化一组 Player 对象。我已经阅读了很多关于初始化原始对象(如整数数组或字符串数​​组)的各种方法,但我无法将这个概念理解为我在这里尝试做的事情(见下文)。我想返回一组初始化的 Player 对象。要创建的玩家对象的数量是我提示用户的整数。我在想构造函数可以接受一个整数值并在初始化 Player 对象的一些成员变量时相应地命名播放器。我想我很接近但仍然很困惑。

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

编辑 - 更新: 这是我理解您的建议后更改后得到的结果:

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

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

关于java - 如何在 Java 中初始化对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5889034/

相关文章:

java - 构建数组时使用 new 和不使用 new 的区别

java - 在出现错误时从 Web 服务设计不同的 JSON 响应

Java 字符串拆分为字母数字和新行?

c - 由于数组会退化为指针,为什么我不能应用 const?

javascript - 每隔一段时间将项目从 JavaScript 数组中逐一输出到 HTML 文本

java - 在适用于 Android 的 Java 中 move 对象/位图

javascript - 按字母顺序向下拉列表添加选项

java - 如何向我的 Map<Integer>、List<String>> 添加一个值?

php连接多个json文件并按id分组

Javascript: 递归问题 --> 返回深度嵌套对象中最长的键值