Java 空指针异常
我试图将我在网上找到的一个类用于动态整数数组,以适应动态“实体”数组,但现在我得到了“NullPointerException”。
引发异常的代码是:
public void initialize()
{
buffer = new BufferedImage(800,600,BufferedImage.TYPE_INT_RGB);
Entities.put(Entities.getCurrentPos()+1, new Entity(100, 100, Color.green));
Entities.put(Entities.getCurrentPos()+1, new Entity(400, 400, Color.blue));
}
DynArrayEntities 类的相关部分:
...
private Entity[] data; // An array to hold the data.
private int currentpos = 0;
...
public void put(int position, Entity value) {
if (position >= data.length) {
int newSize = 2 * data.length;
if (position >= newSize)
newSize = 2 * position;
Entity[] newData = new Entity[newSize];
System.arraycopy(data, 0, newData, 0, data.length);
data = newData;
}
data[position] = value;
currentpos++;
}
....
public int getCurrentPos() {
return currentpos;
}
提前感谢您的帮助!
I attempted to adapt a class I had found on the web for a dynamic array of ints for a dynamic array of "Entities," but now I am getting a "NullPointerException."
The code raising the exception is:
public void initialize()
{
buffer = new BufferedImage(800,600,BufferedImage.TYPE_INT_RGB);
Entities.put(Entities.getCurrentPos()+1, new Entity(100, 100, Color.green));
Entities.put(Entities.getCurrentPos()+1, new Entity(400, 400, Color.blue));
}
The relevant parts of DynArrayEntities class:
...
private Entity[] data; // An array to hold the data.
private int currentpos = 0;
...
public void put(int position, Entity value) {
if (position >= data.length) {
int newSize = 2 * data.length;
if (position >= newSize)
newSize = 2 * position;
Entity[] newData = new Entity[newSize];
System.arraycopy(data, 0, newData, 0, data.length);
data = newData;
}
data[position] = value;
currentpos++;
}
....
public int getCurrentPos() {
return currentpos;
}
Thanks in advance for your help!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
否则,第一次在方法中访问数据时数据为空。
otherwise data is null the first time you access it in the method.
所做的事情
您在初始化
data
之前you're doing
before initializing
data
(Entities 是一个字段吗?在这种情况下,您应该将其称为实体。请参阅 http://java.sun .com/docs/codeconv/)
您应该准确地指出 NPE 是在哪一行抛出的。如果它位于initialize() 方法的第二行,则Entities 字段可能为空。如果是在 put() 方法中,那么可能是因为数据字段为空。
(Is Entities a field? In that case you should call it entities. See http://java.sun.com/docs/codeconv/)
You should tell exactly that on which line the NPE is thrown. If it's in the initialize() method's second line, then probably the Entities field is null. If it's in the put() method, then probably it's because the data field is null.
您这样做只是作为学习练习吗?如果没有,为什么不使用
java .util.Vector
,它为任何对象
提供动态数组?Are you doing this just as a learning exercise? If not, why not use
java.util.Vector
, which provides a dynamic array for anyObject
?