我需要将字符串拆分两次,以便在OWL文件上应用指标。第一次没关系,数组部分得到两个元素,但第二次数组firstDataSet为空,我得到了这个错误:线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:1。请帮忙吗?
String line;
String[] parts = new String [4];
String[] firstDataSet = new String [4];
String[] secondDataSet = new String [4];
double externalSameAsCounter = 0;
double externalEdgeCounter = 0;
double ratio = 0;
try{
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
line = br.readLine();
while ((line = br.readLine())!= null ){
if(line.contains("->") && line.contains(".")){
parts = line.split("->");
firstDataSet = parts[0].split(".");
if(parts[1].contains("http")){
secondDataSet = parts[1].split(".");
}
if(((firstDataSet[1].toLowerCase()).contains(secondDataSet[1].toLowerCase()))){
externalEdgeCounter = externalEdgeCounter + 1;
}
}
if(line.contains("owl:sameAs")){
parts = line.split("->");
firstDataSet = parts[0].split(".");
secondDataSet = parts[1].split(".");
if(!((firstDataSet[1].toLowerCase()).contains(secondDataSet[1].toLowerCase()))){
externalSameAsCounter = externalSameAsCounter +1;
}
}
}
}
catch (FileNotFoundException ex){
System.out.println(
"Unable to open file");
}
catch(IOException ex) {
System.out.println(
"Error reading file");
}
ratio = (double)(externalSameAsCounter / externalEdgeCounter);
return ratio;
答案 0 :(得分:3)
在第二个if
块中,您正在分割"->"
,但您无法保证字符串包含该子字符串,因为您检查的是字符串是否包含"owl:sameAs"
。
答案 1 :(得分:1)
当正则表达式时,.
表示任何字符,如果您在.
上拆分,它将无法满足您的期望。我建议尝试"[.]"
,这意味着.
字面意思。