所以,今天我在尝试分割已经从长字符串中分割出来的字符串数组元素时遇到了障碍。它的工作原理如下: 从文件创建字符串。该字符串在空行 (\n\n) 处分割,这些空行基本上是文本段落,在其他地方用作正文文本。 每个段落都以主题开头,后跟星号,最后是正文。 问题是这样的—— 在迭代每个段落字符串元素时以星号字符(当然是转义的)分割这些元素太简单了。为了演示,第一部分效果很好:
sections = formatted.split("\n\n"); //sections previously declared as string array
int lines = sections.length ;
for(int i= 0 ; i< lines; i++) {
sections[i] = "Heading\n\n" + sections[i] ;
现在,当尝试在每次迭代中执行另一项任务时(是的,只需在脑海中将两个代码窗口连接在一起),它就会在第二个结果索引上抛出 NPE:
String paragraph = sections[i];
String[] half = paragraph.split("\\*");
topics[i] = half[0]; //Topics also previously declared as array
}
迭代器内的最后一行抛出 NPE(未越界)。我无法判断它是 I 还是 ) 索引。
我真的很感激理解为什么这不起作用。也许是因为我似乎总是在午夜之后遇到这些问题......
如何构建这两个并行实例数组?谢谢!
最佳答案
在我看来,Topics
可能为空 - 您显示的代码中没有任何内容可以为其分配非空值。您可能想要:
Topics = new String[lines];
在循环之前。您也应该能够在调试器中很容易地发现这一点。 (如果您对 NPE 的来源感到困惑,添加诊断和/或调试通常是第一步。)
另请注意,通常您的变量将被称为 sections
和 topics
,因为 Java 中的变量通常采用驼峰命名法。
关于java - 在 for 循环中嵌套 string.splits - 分配时内部 split 得到 NPE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20393308/