2012-01-06 111 views
3

String.split()生成NullPointerException。String.split()生成NullPointerException

BufferedReader brs = new BufferedReader(new InputStreamReader(System.in)); 
String s1; 
String s2[]; 
s1 = brs.readLine(); 
s2 = s1.split(" "); 
+3

因为你的'readLine()'返回null。 – Stephan 2012-01-06 13:18:51

+0

@Stephan它不是null。 – 2012-01-06 13:20:17

+2

从您的代码和抛出的异常中,很明显s1为空。这给我们带来了下一个结论:那brs.readLine();返回null。你应该通过检查它是否为空之前,从它调用一个方法。另外,下次提供堆栈跟踪,以便我们可以检查出错的地方。 – 2012-01-06 13:23:23

回答

11

S1可能是null

s1 = brs.readLine(); 
if(s1!=null) 
s2 = s1.split(" "); 
1

如果这条线抛出空指针

s2 = s1.split(" "); 

然后调用编辑分流/ EDIT

注前S1必须为空

检查空: BufferedReader.readLine(); 返回: 包含行的内容,不包括任何行终止符,或NULL,如果流的末尾已到达

1

BufferedReader.readLine(字符串)返回null如果结束遇到流。请参阅javadoc。在分割s1之前,您应该先进行空检查。

2

s1可能为空。尝试这个。

if (s1 != null && !s1.trim().equals("")) 
    s2 = s1.split(" "); 
0

您的BufferedReader明确为空,所以readline()返回null。也许你的输入流是空的。