使用Java比较/包含方法的问题

时间:2014-04-30 02:00:27

标签: java jena

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

  

" [sswap:主题,d:投资;"

。我尝试了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..

3 个答案:

答案 0 :(得分:0)

由于您要比较的线与不完全匹配

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

VS

[ a sswap:Subject , d:investment ;

然后使用contains http://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)

答案 1 :(得分:-1)

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

改变这一点:

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

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

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

答案 2 :(得分:-1)

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

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