数组的第二维度无法初始化-Java

数组的第二维度无法初始化-Java,java,arrays,multidimensional-array,initialization,Java,Arrays,Multidimensional Array,Initialization,我很抱歉问这样一个基本的问题,但我自己无法看到我的代码在哪里中断。我试图定义一个二维对象数组,据我所知,代码没有注册第二个维度。因此,后面的代码无法在数组中指定二维索引,因为第二个维度仅作为空数量存在 我觉得自己在这里很傻。我不得不想象我的错误是一个非常基本的错误,因为没有足够的代码让它变得微妙,但我看不到它!我很感激你能给我任何帮助,让我把我的眼睛集中在这个问题上 这是我的密码: int x = 17; Object[][] 2Darr = new Object[50][x]; 运行此代码将

我很抱歉问这样一个基本的问题,但我自己无法看到我的代码在哪里中断。我试图定义一个二维对象数组,据我所知,代码没有注册第二个维度。因此,后面的代码无法在数组中指定二维索引,因为第二个维度仅作为空数量存在

我觉得自己在这里很傻。我不得不想象我的错误是一个非常基本的错误,因为没有足够的代码让它变得微妙,但我看不到它!我很感激你能给我任何帮助,让我把我的眼睛集中在这个问题上

这是我的密码:

int x = 17;
Object[][] 2Darr = new Object[50][x];

运行此代码将生成一个定义为[50][]的数组。

java中没有这样的二维数组。只有数组的数组。你能做的就是

Object[][] arr = new Object[50][];
arr[0] = new Object[5]; // zeroth element of arr with value as an array of 5 elements
arr[1] = new Object[7]; // first element of arr with value as an array of 7 elements

你不需要int x=17;下面的代码足以在java中创建二维数组。 Object[]2Darr=新对象[50][];
如果我在Eclipse中运行它,这可能是

的重复

int six = 6;
String [][] arr = new String [5][six];
然后在调试器中查看数组,我看到:

[[null, null, null, null, null, null], [null, null, null, null, null, null], [null, null, null, null, null, null], [null, null, null, null, null, null], [null, null, null, null, null, null]]

因此,我认为这正如我所期望的那样有效。

因此我收集了一些信息,但我知道区别实际上是语义上的区别。为了澄清这一点,我的印象是,可以在Java中通过在第一次初始化中定义两个数组长度来定义2D数组。正如用户2310289在下面演示的。如果您能抽出一点时间来澄清您的陈述,我将不胜感激。@Bibliophael,很抱歉回复晚了。实际上,我想说的是,当存在多维数组时,它们实际上是java中数组的数组。这就是我的观点。您已经定义了一个可以使用的二维阵列。我所困惑的和你的担心是一样的。为什么同样的东西会给你和另一个用户提供不同的输出。我现在正在调查此事。如果我之前的评论听起来不耐烦,我很抱歉。我一直在试验代码,我发现第二维度的显式定义也失败了。也就是说,单步遍历主数组的每个索引并尝试为每个索引指定一个特定长度的数组是行不通的。调试器旋转到一系列未找到的路径并使程序崩溃。您提供的链接断言,我可以通过类似以下形式的代码定义2D数组:int[]]multi=new int[5][10];这就是我期望给定代码执行的方式。这当然是我期望的,但这不是我的程序产生的结果。您如何测试它?Eclipse调试器。我希望看到类似于上面列出的内容,但是当我查看数组时,我只看到一个维度,或者更确切地说是一个未定义数组的垂直列表?您正在查看/加载不同的类/代码吗?数组中的对象类是我自己定义的。它基本上是ArrayList的简单外观。这会引起问题吗?