谁能告诉我为什么我在这里得到空指针异常?我检查了代码并没有找到可能正在做的任何地方,我有点难过。任何帮助将不胜感激:D。
顺便说一句,该方法应该在指定的字符之间拆分字符串,例如:substringChars(“sectionA; sectionB; sectionC;”,“;”);会在每个分号(要分割的指定字符)之间拆分字符串,并返回带有“sectionA”“sectonB”和“sectionC”的字符串数组
代码:
package substringChars;
public class SubstringChars {
public static void main(String[] args) {
substringChars("sectionA; sectionB; sectionC;", ';'); //There is an error on this line
System.out.println(SubstringChars.output[0] + SubstringChars.output[1] + SubstringChars.output[2]);
}
public static String[] output;
public static void substringChars(String iString, char sChar) {
int pChar = 0, outputSlot = 0;
char selectedChar;
for(int i = 0; i <= iString.length(); i++) {
selectedChar = iString.charAt(i);
if(selectedChar == sChar) {
if(i != iString.length()) {
SubstringChars.output[outputSlot] = (iString.substring(pChar, i)); //There is an error on this line
}
if(i == iString.length()) {
SubstringChars.output[outputSlot] = (String)(iString.substring(pChar));
}
pChar = i;
outputSlot++;
}
}
}
}
错误:
Exception in thread "main" java.lang.NullPointerException
at substringChars.SubstringChars.substringChars(SubstringChars.java:16)
at substringChars.SubstringChars.main(SubstringChars.java:5)
谢谢您的帮助!
答案 0 :(得分:0)
http://docs.oracle.com/javase/7/docs/api/java/lang/String.html
String中有一个名为split(String regex)的函数可以执行与您尝试执行的操作相同的操作。你应该使用它,除非你是试图重新编码轮子的一些原因。
String str = "hello;my;name;is;saigon"
String a[] = str.split(";")
// a[0] = "hello"
// a[1] = "my"
// a[2] = "name"
// ...
答案 1 :(得分:0)
您正在使用未初始化的变量!
你有
public static String[] output;
永远不会未初始化,当您尝试使用它来存储数组时,它使用null(不存在的对象)。
这将创建最多1000个字符串的String数组,并在变量输出中存储引用:
public static String[] output = new String[1000];
答案 2 :(得分:0)
在substringChars
方法的开头,添加以下内容:
output = new String[3];
并更改你的for循环使用&lt;而不是&lt; =。
for(int i = 0; i < iString.length(); i++) {
另外,我建议先使用Vector生成列表,然后再转换为普通数组。
答案 3 :(得分:0)
您的Array输出为null,因为您尚未初始化它,
而不是
public static String[] output;
DO
public static String[] output = new String[3];