Java:为什么不返回更新的值?

时间:2011-03-22 04:53:45

标签: java

  public static int getElementIdx (DOMElement elt) {
        int count = 1;

        for (DOMElement sib = (DOMElement) elt.getPreviousSibling(); 
                 sib != null; 
                 sib = (DOMElement) sib.getPreviousSibling())
        {
            System.out.println("sib " 
              + sib.getTagName () + " elt " + elt.getTagName ());
            if (sib.ELEMENT_NODE == sib.getNodeType () &&
              sib.getTagName () == elt.getTagName ()) {
                    System.out.println (count);
                    count++;
                }
        }
        return count;
    }

count始终返回1.但是,在for循环内,它返回递增的计数值。这真的很奇怪,我认为声明一个局部变量计数在for循环之外应该可以工作....

1 个答案:

答案 0 :(得分:3)

count用法很好 - 内部if语句可能永远不会成立。

罪魁祸首可能是

sib.getTagName() == elt.getTagName()

您需要使用equals()检查字符串相等性:

sib.getTagName().equals(elt.getTagName())