java - 在 for 循环中嵌套 string.splits - 分配时内部 split 得到 NPE

标签 java android arrays split iterator

所以,今天我在尝试分割已经从长字符串中分割出来的字符串数组元素时遇到了障碍。它的工作原理如下: 从文件创建字符串。该字符串在空行 (\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 的来源感到困惑,添加诊断和/或调试通常是第一步。)

另请注意,通常您的变量将被称为 sectionstopics,因为 Java 中的变量通常采用驼峰命名法。

关于java - 在 for 循环中嵌套 string.splits - 分配时内部 split 得到 NPE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20393308/

相关文章:

java - 不使用操作链接在目标操作中设置实例成员值?

c - 对数组使用 malloc 和初始化程序之间的区别?

android - 打开推送通知时开始 fragment ?

arrays - 在 Excel VBA 中的多个工作表中动态标注数组?

javascript - 从 javascript 数组创建 HTML 表格

Java LibGDX 如何解析 JSON?

java - 验证 vaadin 7 网格中的列值

java - 为什么我得到 java.io.EOFException?

android - 使用运动布局时开始与 UI 交互后,进度条可见性重置

java - 按后退按钮后,没有进入主要 Activity 而是关闭应用程序