将数据插入到2维byte []数组中

时间:2016-09-09 23:38:48

标签: java arrays multithreading

我是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 []是(使用平台默认字符集的字节序列,将结果存储到新的字节数组中。)

3 个答案:

答案 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];