java - 将字符串分割两次,但第二次出现错误

标签 java string split

我需要将字符串拆分两次才能在 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;

最佳答案

在第二个 if block 中,您在 "->" 上进行拆分,但您不能保证字符串包含该子字符串,因为您检查的只是是否字符串包含“owl:sameAs”

关于java - 将字符串分割两次,但第二次出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27571737/

相关文章:

java - 错误 : Unable to resolve dependency for ':app@debugUnitTest/compileClasspath' : Could not download opentok-android-sdk-v3. aar

将所有小写字符转换为大写字符,反之亦然

javascript - 如何用空格分割字符串,并保持逗号分开?

Java:在方法中用更少的代码分割字符串

java - 如何查看 hibernate 正在触发的查询?

java - 如何让 IntelliJ 使用多个线程进行后台工作?

代码块输出控制台已停止工作

python - 在每个 "X"上分割一个字符串

java - 为什么 for-each 循环适用于数组? ( java )

c++ - 使用字符串和枚举映射时,Switch执行第一种情况而不是默认情况