Java 无效的空指针异常';没想到

Java 无效的空指针异常';没想到,java,Java,有人能告诉我为什么这里出现空指针异常吗?我检查了代码,没有找到任何地方可以这样做,我有点困惑。任何帮助都将不胜感激。 顺便说一下,该方法应该在指定的字符之间分割字符串,例如:substringChars(“sectionA;sectionB;sectionC;”,“;”);将在每个分号(要拆分的指定字符)之间拆分字符串,并返回带有“sectionA”、“SectionB”和“sectionC”的字符串数组 代码: 谢谢你的帮助! 字符串中有一个名为split(stringregex)的

有人能告诉我为什么这里出现空指针异常吗?我检查了代码,没有找到任何地方可以这样做,我有点困惑。任何帮助都将不胜感激。

顺便说一下,该方法应该在指定的字符之间分割字符串,例如:substringChars(“sectionA;sectionB;sectionC;”,“;”);将在每个分号(要拆分的指定字符)之间拆分字符串,并返回带有“sectionA”、“SectionB”和“sectionC”的字符串数组

代码:

谢谢你的帮助!

字符串中有一个名为split(stringregex)的函数,它执行与您尝试执行的相同的操作。你应该使用这个,除非你是为了某些原因试图重新编码轮子

String str = "hello;my;name;is;saigon"
String a[] = str.split(";")
// a[0] = "hello"
// a[1] = "my"
// a[2] = "name"
// ...

您正在使用未初始化的变量

你有

public static String[] output;
它从来都不是未初始化的,当您尝试使用它存储数组时,它使用的是null(不存在的对象)

这将为最多1000个字符串创建字符串数组,并将引用存储在变量输出中:

public static String[] output = new String[1000];
  • 输出数组从未初始化
  • for循环的计数超过了“iString”的界限
  • substringChars
    方法的开头,添加以下内容:

    output = new String[3];
    

    并将for循环更改为使用<而不是,数组输出为null,因为您尚未初始化它,
    而不是

    public static String[] output;
    


    有什么原因不能使用调试器吗?还有,在堆栈跟踪中给出行号的原因。看到了。最好将标记放在代码查看器的“窗口”(当然太窄了)中。您的问题是“输出”数组不存在。仅仅声明引用是不够的。学习编程的标准方法是重新设计几个轮子。是的,杜克林说的,正是我想做的。谢谢你的回复!这基本上就是elimirks所说的,但是当我只需要iString.length()插槽时,这将在输出字符串中创建1000个插槽。谢谢你的回复:D
    output = new String[3];
    
    for(int i = 0; i < iString.length(); i++) {
    
    public static String[] output;
    
    public static String[] output = new String[3];