我是Java新手并尝试使用二维 byte [] 类型。我创建了一个2D byte[]
数组,如下所示。但每当我尝试向其中插入一些数据时,它都会出错:NullPointerException
byte[][][] Requisition = new byte[10][][];
byte[] someinput = ("example").getBytes();
Requisition[0][0]=someinput;
System.out.println("Printing:" + Requisition[0][0].toString());
etc..
我插入此2D数组的数据类型是byte[]
类型。因为我插入的是加密数据,所以这些数据的格式为 byte [] ,而不是 byte
我希望Requisition
数组为一行保存两个输入。例如
Requisition[0][1]=someinput1;
Requisition[0][2]=someinput2;
我要插入的someinput1
不是类型byte
。我插入的数据将是byte[]
类型。
我的意思是byte []是(使用平台默认字符集的字节序列,将结果存储到新的字节数组中。)
答案 0 :(得分:1)
应该是:
byte[][][] someinput = new byte[5][5][5];
然后您可以将数据插入此数组中。
答案 1 :(得分:0)
执行arr[n][m]
时,您正在访问arr
所属类型的元素。在您的情况下,这是byte
。如果要将数组分配给2D数组,只需执行以下操作:
Requisition[0] = someinput;
和...
byte[][] Requisition = new byte[10][];
byte[] someinput = ("example").getBytes();
Requisition[0]=someinput;//These insertion will happens in a loop later
用...测试
for (byte b : Requisition[0])
System.out.println(b);
当然,这个答案是基于你实际上并没有处理2D数组的事实,你有一个3D数组,这可能是因为错误地将数组插入到单个元素中。如果没有,请将此逻辑应用于任何 n 维数组。
答案 2 :(得分:0)
不,您没有创建二维数组。你创建了一个三维数组! - > byte[1][2][3]
如果要创建二维数组,则需要声明表的列和单元格。这只是两个值,而不是像你那样的三个值。为清楚起见,请查看此图片:http://www.php-kurs.info/grafik/xyz.png
您可以声明和填充的二维数组:
int rows = 10;
int cols = 10;
int[][] twoDimension = new int[rows][cols];
for (int i = 0; i < twoDimension.length; i++) {
for (int j = 0; j < twoDimension[i].length; j++) {
twoDimension[i][j] = // Value you want to fill!
}
}
这是一个int值数组。如果要创建字节数组,则需要更改数组的声明。
byte[][] twoDimension = new byte[rows][cols];