gpt4 book ai didi

java - 尝试将 int 数组的内容复制到 Dimension 数组会导致 NullPointerException

转载 作者:行者123 更新时间:2023-12-01 12:58:23 25 4
gpt4 key购买 nike

在我的 Java 编程课上,我们接到了对游戏进行编程的作业,我目前正在研究从文件加载已保存的游戏。

我逐行读取这个文件并将其分成一个标记数组。

在此保存游戏文件中,第一行包含 8 对玩家人物的 x 和 y 坐标(2 个玩家 * 4 个人物)。

读取和解析文件工作正常,但是当我尝试将连续数组中的坐标复制到存储数字位置的 Dimension 类时,我收到 NullPointerException。

这是代码:

Dimension Player0Positions[] = new Dimension[4];
Dimension Player1Positions[] = new Dimension[4];

int bufferArray[] = new int[16];

for(int i = 5; i < 21; ++i) {
bufferArray[(i-5)] = Integer.parseInt(firstLineData[i]);
}

for(int i = 0; i < 4; ++i) {
Player0Positions[i].setSize(bufferArray[(2*i)], bufferArray[(2*i + 1)]);
Player1Positions[i].setSize(bufferArray[(2*i + 8)], bufferArray[(2*i + 9)]);
}

复制中的对象存在,并且我没有留下任何索引边界 (2*(i = 3) + 9 = 15),但我什至没有到达那里,因为代码在第一次循环迭代时崩溃,抛出Player0Positions[i].setSize( ...

行出现异常

最佳答案

Dimension 数组的所有元素均未初始化。

即所有 Player0Positions[i]Player1Positions[i] 均为 null,因此当您尝试对它们调用 .setSize 时,您会得到 NPE。

所以,您可能需要先初始化它们 -

for(int i = 0; i < 4; ++i) {
Player0Positions[i] = new Dimension();
Player0Positions[i].setSize(bufferArray[(2*i)], bufferArray[(2*i + 1)]);
Player1Positions[i] = new Dimension();
Player1Positions[i].setSize(bufferArray[(2*i + 8)], bufferArray[(2*i + 9)]);
}

关于java - 尝试将 int 数组的内容复制到 Dimension 数组会导致 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23713081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com