所以,今天我试图分裂一个已经从一个长字符串拆分的字符串数组元素了。它的工作原理如下: 从文件创建字符串。此字符串以空行(\ 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(不超出界限)。我不知道它是否是我或者索引。
我真的很感激理解为什么这不起作用。也许是因为我似乎总是在午夜之后很好地解决这些问题......
如何构建这两个并行实例数组?谢谢!
答案 0 :(得分:2)
我觉得Topics
是空的 - 在您显示的代码中没有任何内容可以为其分配非空值。你可能想要:
Topics = new String[lines];
在循环之前。您也应该能够在调试器中轻松发现这一点。 (如果您对NPE的来源感到困惑,通常首先添加诊断和/或调试。)
另请注意,传统上您的变量将被称为sections
和topics
,因为Java中的变量通常是camelCased。