繁体   English   中英

数组索引超出绑定的2D数组

[英]Array Index out of bound 2D array

我有一个二维数组,没有。 行是1和否。 列> 1。

double[][] T = new double[1][24];
System.out.println(T[1].length);

但是当我打印列的长度时,它表示索引超出范围。

但是当我打印以下内容时,

System.out.println(T[0].length);

我得到24的结果。但是T [0]不应该等于1而T [1]不能等于24吗? 为什么我收到此错误? 我想,java认为上面的数组是1D数组,因为它只有一行。 但我需要它作为进一步处理的2D数组。 有人可以帮忙吗?

数组索引从0开始。

如果数组长度为1 (此处为第1维),则只能引用元素0

换一种说法:

  • 声明说明了所需的大小 (此处为1
  • 元素引用表示所需的基于0的索引 (此处为0

Array索引从0开始。

您的数组长度为1,因此T[0]是有效索引,但T[1]不是。

System.out.println(T[0].length);

是正确的。 因为Array索引从0开始

数组基于零,所以当double[][] T = new double[1][24]; 你创建了一个二维数组,第一个维度是1,第二个是24,所以这是1 * 24数组

所以System.out.println(T[1].length); 给你java.lang.arrayindexoutofboundsexception由于数组是基于零的

如果你写了这个double[][] T = new double[3][24]; 你有3 * 24阵列: -

System.out.println(T[0].length);//24
System.out.println(T[1].length);//24
System.out.println(T[2].length);//24
System.out.println(T[3].length);//java.lang.arrayindexoutofboundsexception

Array索引从0开始。

double[][] T = new double[1][24];

也可以声明如下:

double[][] T = new double[1][];
T[0] = new double[24];

想象1X24的矩阵。 你没有第二列如此明显它将通过nullpointerException。

在Java / Android和许多其他语言中,这是如何声明的

matrix[numRows][numColumns] 

由于Array索引从0开始,因此需要注意确保访问单个值

x = matrix[0][1]  

或者,如果您正在访问第一行(作为单维数组)

x = matrix[0]

数组索引从0开始,而不是1。

如果你的数组长度是1,那么你可以从0开始。所以T [0]是一个有效的索引,但T [1]不是

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM