我有一个2D数组,其中没有。行是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 :(得分:6)
数组索引从0开始。
如果您的数组长度为1
(此处为第1维),那么您只能引用元素0
。
换句话说:
1
)0
)答案 1 :(得分:2)
Array
个索引从0
开始。
您的数组长度为1,因此T[0]
是有效索引,但T[1]
不是。
答案 2 :(得分:2)
System.out.println(T[0].length);
是对的。因为Array索引从0开始
答案 3 :(得分:1)
数组基于零所以当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
答案 4 :(得分:1)
Array
索引从0开始。
double[][] T = new double[1][24];
也可以声明如下:
double[][] T = new double[1][];
T[0] = new double[24];
答案 5 :(得分:1)
想象1X24的矩阵。你没有第二列那么明显它会通过nullpointerException。
答案 6 :(得分:1)
在Java / Android和许多其他语言中,这是声明的方式
matrix[numRows][numColumns]
由于Array
索引从0
开始,您需要小心确保您正在访问单个值
x = matrix[0][1]
或者,如果您正在访问第一行(作为单维数组)
x = matrix[0]
答案 7 :(得分:1)
数组索引以0而不是1开始。
如果您的数组长度为1,那么您可以从0开始。 所以T [0]是一个有效的索引,但T [1]不是