java空指针问题,怎么改?
for(String indiName : indiLst) {
System.out.println(" " + indiName);
}
说这一句中有空指针,能不能帮忙看看是什么错误?
private void setIndividualRelated() {
ExtendedIterator classesIter = ontModel.listClasses();
while(classesIter.hasNext()) {
OntClass ontClass = (OntClass)classesIter.next();
if(!ontClass.hasSubClass()) {
String className = ontClass.getURI();
// className = className.substring(className.indexOf('#') + 1);
classLst.add(className);
ExtendedIterator indiIter = ontClass.listInstances();
ArrayList<String> indiLst = new ArrayList<String>();
while(indiIter.hasNext()) {
Individual indi = (Individual)indiIter.next();
String indiName = indi.getURI();
indiName = indiName.substring(indiName.indexOf('#') + 1);
indiLst.add(indiName);
allIndiLst.add(indiName);
}
if(indiLst.size() != 0) {
classIndiMap.put(className, indiLst);
}
}
}
}
public build(String filePath) {
this.filePath = filePath;
ontModel = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM, null);
loadModel();
prefix = ontModel.getNsPrefixURI("");
classLst = new ArrayList<String>();
classIndiMap = new HashMap<String, ArrayList<String>>();
allIndiLst = new ArrayList<String>();
setIndividualRelated();
}
public List<String> getClassesList() {
return classLst;
}
public Map<String, ArrayList<String>> getClassIndiMap() {
return classIndiMap;
}
public List<String> getAllInstance() {
return allIndiLst;
}
public static void main(String[] args) {
build owlIndiInfo = new build("src\\ontology\\new钢铁.owl");
List<String> classLst = owlIndiInfo.getClassesList();
Map<String, ArrayList<String>> classIndiMap = owlIndiInfo.getClassIndiMap();
for(String className : classLst) {
ArrayList<String> indiLst = classIndiMap.get(className);
System.out.println(className + ":");
for(String indiName : indiLst) {
System.out.println(" " + indiName);
}
}
答案:空指针的话你调试的时候跟踪一下对象就知道啦. 如果是null ,然后下一句又用这个对象的属性.肯定会报错的,遇到问题别紧张.空指针是代码里面最简单的错误了.多遇到一些错误,自己解决对自己有好处,.心理素质也会提高的.我在公司里面看到的错误都是好几页的来.已经见怪不怪了..
其他:用火狐浏览器的debug看一下空指针具体出自哪里,找到源头就好改了 应该是你的变量没有正常的初始化造成的
上一个:关于java正则表达式的问题
下一个:java数据库操作和在线查询翻译问题。