FileReader fr=new FileReader(file);
BufferedReader bufferReader=new BufferedReader(fr);
s=bufferReader.readLine();
while(s!=null){
int i=0;
while(s.charAt(i)!='-'){
temp1=temp1.append(s.charAt(i));
i++;
}
i++;
while(s.charAt(i)!='-'){
temp2=temp2.append(s.charAt(i));
i++;
}
i++;
while(s.charAt(i)!='-'){
temp3=temp3.append(s.charAt(i));
i++;
}
i++;
while(s.charAt(i)!='-'){
temp4=temp4.append(s.charAt(i));
i++;
}
Judge judge=new Judge();
int k;
k=judge.jud(temp1,temp2,temp3,temp4,s1,s2,s3,s4);
if(k==1){
jta21.append(s);
}
else
jta21.setText("没有对应的数据");
s=bufferReader.readLine();
之前的代码是s.bufferReader.readLine();在第一个while语句上,第一次测试的时候就录入了一段String类型的数据。因为s=bufferReader.readLine();已经会读取一行文本,当在第一个while语句中,指针会往下移动,指向空,导致空指针错误,改为外层while语句末尾处重新再读取文件下一行就不会有错误。若录入多行文本,错误的读取会漏掉第一行的数据。