Java 如何使用BufferedReader';s线分割法?
我想读取一个文本文件,并将一些必需的值存储为java字符串 我使用Bufferedreader读取和存储这些值。我插入了一行,其中包含:可能的值将为Java 如何使用BufferedReader';s线分割法?,java,line,bufferedreader,string-split,Java,Line,Bufferedreader,String Split,我想读取一个文本文件,并将一些必需的值存储为java字符串 我使用Bufferedreader读取和存储这些值。我插入了一行,其中包含:可能的值将为 NAME: lastname, firstname *CONTRACTOR* NAME: NAME: Sapi, Raj J. NAME: Alle Peter, Shortley Swara 从上面我只需要姓和名。有时这个值根本不存在。在这种情况下,如何验证名称行是否有值?为此,我使用下面的代码引发Nullpointer异常 BufferedR
NAME: lastname, firstname *CONTRACTOR*
NAME:
NAME: Sapi, Raj J.
NAME: Alle Peter, Shortley Swara
从上面我只需要姓和名。有时这个值根本不存在。在这种情况下,如何验证名称行是否有值?为此,我使用下面的代码引发Nullpointer异常
BufferedReader br = new BufferedReader(new InputStreamReader(
(conn.getInputStream())));
String line;
while ((line = br.readLine()) != null) {
if (line.contains("CNUM")) {
cnum = line.split(" ")[1];
// break;
}
if (line.contains("NAME")) {
name = line.split(" ")[2];
}
}
你可能想要这样的东西
BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())));
String line;
while ((line = br.readLine()) != null) {
if (line.contains("CNUM")) {
cnum = line.split(" ")[1];
// break;
}
if (line.trim().startsWith("NAME:")) {
line = line.replace("NAME:", "");
line = line.trim();
if (line.contains(",")){
String[] contractorName = line.split(",");
String lastName = contractorName[0].trim();
String firstName = contractorName[1].trim();
// use the last name and first name as you wish here.
} else {
// line doesn't contain a first and last name for contractor. invalid data.
continue;
}
}
}
它从哪一行抛出NPE?@Rehman-我在哪里检查行。包含(“名称”)。不可能。再次检查您的行号。并发布完整的堆栈跟踪。
line
不能为null,因为您已经执行了null检查只是猜测:Changename=line.split(“”[2]代码>到name=line.split(“”[1]代码>非常感谢。。。我会试试的,我不确定。仍然显示ArrayIndexOutOfBounds异常。在此之前,我试着打印出名字和姓氏。它印刷得很好。但在此之后,给出了这个例外。它在哪个数据元素上失败了?您可以单步查看代码并查看它获得ArrayIndexOutOfBounds异常的数据元素是什么吗。