2D数组大小更改错误Java
我试图使用带有导入java.util.Arrays的Arrays.copyOf来调整数组的大小,但出于某种原因,即使控制台输出的数组长度是4,就像我尝试为数组第4行中的任何内容赋值时所应该的那样,它也会在尝试执行的行上给我一个nullPointerException为第4行中的内容赋值。谁能给我解释一下吗2D数组大小更改错误Java,java,arrays,dynamic,size,Java,Arrays,Dynamic,Size,我试图使用带有导入java.util.Arrays的Arrays.copyOf来调整数组的大小,但出于某种原因,即使控制台输出的数组长度是4,就像我尝试为数组第4行中的任何内容赋值时所应该的那样,它也会在尝试执行的行上给我一个nullPointerException为第4行中的内容赋值。谁能给我解释一下吗 import java.util.Arrays; import static java.lang.System.out; public class Main { static int
import java.util.Arrays;
import static java.lang.System.out;
public class Main {
static int TTT[][] = new int[3][3];
public static void main(String[] args) {
TTT = Arrays.copyOf(TTT, 4);
out.print(TTT.length);
TTT[3][0] = 2;
}
}
这给了我一个输出:
4Exception in thread "main" java.lang.NullPointerException
at Main.main(Main.java:13)
有人知道为什么会这样吗。还有一点需要注意的是,有没有更好的方法可以让我制作一个可以改变大小的数组?如果是这样,你能给我一些示例代码请 来自:
复制指定的数组,截断或填充空值(如有必要),使副本具有指定的长度。对于副本中有效但不是原始索引的任何索引,副本将包含null。当且仅当指定的长度大于原始数组的长度时,此类索引才会存在。生成的数组与原始数组的类完全相同
发生的情况是数组大小增加了,因此在TTT[3]
位置创建了对int[3]
的新引用,并按照文档中的说明使用null
对其进行初始化。数组具有基元类型这一事实并不意味着它应该自己初始化内部数组
尝试:
TTT = Arrays.copyOf(TTT, 4);
TTT[3] = new int[3];
哪一条是13号线?我只看到12
out.print(TTT.length)代码>或系统输出打印(TTT.长度)
?out.print(TTT.length)
很好,因为他正在导入特定的内部引用。至于您的旁注,如果您想要一个类似数组的可调整大小的数据结构,我建议在java.util包中使用ArrayList。您可以在helpfulIts第13行找到文档,因为有其他行对我试图解决的问题没有任何影响,它们都在运行。