【问题标题】:Issues with using Java compare/contain methods使用 Java 比较/包含方法的问题
【发布时间】:2014-04-30 02:00:27
【问题描述】:

拜托,我正在做一个项目,我必须遍历 RDF(海龟格式)并找到可以存储该行前面的行的特定行。基本上,我是将每个遍历线与字符串进行比较:

"[a sswap:Subject , d:investment;"

。我尝试了 contains() 方法和 equals() 方法,但都不起作用。为此,我编写了一个简单的 Java 代码。唯一的问题是即使它到达了所需的行,它也不会进入 for 循环来执行。这意味着布尔值是错误的,但为什么呢?有人可以解释一下我可能做错了什么吗?

    .
    .
    .
    if(line =="[ a  sswap:Subject , d:investment ;"){
                            do{

                                for (int i = 0; i < line.length(); i++) {
                                    if (line.charAt(i) == ';') {
                                        arr.add(line); //an arraylist
                                    }
                                }
                                line = it.nextLine(); //loop to the next line
                                //traverse through the characters in the line
                                //if the last character is ";"
                                //store that line.
                            }while(line!="]");
   .
   .
   .

下面是海龟中我试图检查 java 代码的 if 语句的行。

sswap:operatesOn [

rdf:type sswap:Graph ; sswap:hasMapping [

                rdf:type sswap:Subject, d:investment; //trying to capture this..

【问题讨论】:

  • @IwishIcouldthinkofagood 正如他所说,他使用了 equals
  • @Rod_Algonquin 你说的太对了。
  • 您执行此操作的方式(处理文件的文本)与 Jena 或 RDF 没有任何关系。执行此操作的基于 RDF 的方法是请求资源 s,以便图形包含两个三元组:s rdf:type sswap:Subjects rdf:type d:investment。使用 Jena 做到这一点并不难。你想要一个解决方案来解决 Jena 的问题吗?

标签: java jena


【解决方案1】:

由于您尝试比较的行不完全匹配

rdf:type sswap:Subject, d:investment; //trying to capture this..

[ a sswap:Subject , d:investment ;

然后要么使用containshttp://docs.oracle.com/javase/7/docs/api/java/lang/String.html#contains(java.lang.CharSequence)

indexOf http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#indexOf(java.lang.String)

【讨论】:

    【解决方案2】:

    您正在比较具有空格的字符串,使用修剪消除字符串前后的空格,然后使用您正在比较的字符串的equals方法;

    改变这个:

    line =="[ a  sswap:Subject , d:investment ;"
    

    收件人:

    line.trim().equals("[ a  sswap:Subject , d:investment ;")
    

    但是在比较它们之前先修剪字符串行是一个好习惯

    【讨论】:

      【解决方案3】:

      请将字符串分配给另一个变量,然后在 IF 语句中进行比较。 喜欢,

      String str="[ a  sswap:Subject , d:investment ;";
       if(line ==str)
          OR
       if(line.equals(str))
      

      【讨论】:

        猜你喜欢
        • 2013-11-07
        • 1970-01-01
        • 2014-02-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-18
        • 2019-04-08
        • 2013-02-08
        • 1970-01-01
        相关资源
        最近更新 更多