我认为已经有类似问题的答案,但我找到了自己的方法:
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
我可以按照自己的方式行事,还是完全错误?
答案 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]]