【发布时间】:2014-04-21 10:19:14
【问题描述】:
在处理一组对象时遇到了很大的麻烦。基本上我定义的内容如下:
public class PlayersList
{
private Player[] players;
private int length;
private int numPlayer = 0;
}
在这种情况下,玩家来自数据类型玩家:
public class Player
{
public String UserName;
public Player(String UserName)
{
this.UserName = UserName;
}
}
现在,当我尝试调用涉及遍历对象数组或对象数组长度的方法时,我得到一个 NPE。我从一个 3 成员数组开始,并且我已经初始化了所有三个成员,所以我不会得到类似的东西。但是,如果我尝试使用类似的东西:
public Player findPlayer(String Player)
{
for(int i = 0; i < players.length; i++)
{
if(Player.equals(players[i].UserName))
{
return players[i];
}
}
return null;
}
在涉及播放器数组元素或其长度的其他类型的代码中,我得到一个 NPE。我做错了什么?有什么办法可以避免这种情况,或者有人可以告诉我我错过了什么吗?非常感谢。
编辑:这里是初始化数组中玩家的代码:
public PlayersList()
{
Player[] players = new Player[3];
players[0] = new Player("Hi");
players[1] = new Player("Bla");
players[2] = new Player("Foo");
length = 3;
}
【问题讨论】:
-
你能告诉我们你初始化数组中
Player对象的代码吗? -
抱歉,我已经添加了。
-
我认为“Player”类周围应该有另一组大括号。
-
首先,重要的是不要将局部变量命名为与类同名 - 不要使用
String Player并同时引用类Player. Java 代码约定说总是以小写开头的变量名:String player。这是一个好习惯,可确保您永远不会为类和变量使用相同的名称。 -
感谢您的建议,我会记住的!
标签: java arrays oop constructor