如何将String拆分为多维数组 - Java

时间:2017-11-07 17:21:57

标签: java arrays string eclipse multidimensional-array

我认为已经有类似问题的答案,但我找到了自己的方法:

String input = new String("word1,word2 word3,word4,word5,word6 word7,word8,word9");
String [] arrayString1D = input.split("|");
String [][] arrayString2D = new String[arrayString1D.length][];

for(int x = 0; x < arrayString1D.length; x++) {
        arrayString2D[x] = arrayString1D[x].split(" ");
}
System.out.println(Arrays.deepToString(arrayString2D));
//and it prints: [[word1, word2], [word3, word4, word5, word6], [word7, word8, word9]]

并且工作正常。但我正在努力使用3dimensional数组 到目前为止我的代码:

String input = new String("word1,word2 word3,word4,word5,word6|word7,word8,word9 word10,word11|word7,word8,word9 word10,word11");

String [] arrayString1D = input.split("|");
String [][] arrayString2D = new String[arrayString1D.length][];
String [][][] arrayString3D = new String[arrayString2D.length][][];

for(int x = 0; x < arrayString1D.length; x++) {
    arrayString2D[x] = arrayString1D[x].split(" ");

    for(int y = 0; y < arrayString2D[x].length; y++) {
        arrayString3D[x][y] = arrayString2D[x][y].split(",");
    }
}

System.out.println(Arrays.deepToString(arrayString3D));

我得到Exception in thread "main" java.lang.NullPointerException 我可以按照自己的方式行事,还是完全错误?

1 个答案:

答案 0 :(得分:0)

您的代码中存在两个问题。 第一个:

String [] arrayString1D = input.split("|");

在上面一行中,&#34; |&#34;是正则表达式中的元字符。所以必须逃脱。上面的行应该改为

String[] arrayString1D = input.split("\\|");

第二期: 在初始化三维数组时,应该像这样做

String [][][] arrayString3D = new String[arrayString2D.length][][];

通过这两项更改,我得到了以下输出

  

[[[word1,word2],[word3,word4,word5,word6],null],[[word7,word8,word9],[word10,word11],null],[[word7,word8,word9] ,[word10,word11],null]]