2011-03-22 22 views
0
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循環之外聲明一個局部變量count應該可以工作....Java:爲什麼不更新的值被返回?

+0

我想你的返回值測試故障。 – julkiewicz 2011-03-22 05:04:51

+0

該代碼很好。也許你在沒有發佈的代碼中做錯了什麼? – 2011-03-22 05:06:28

回答

3

count用法很好 - 內部if語句可能永遠不會成立。

的罪魁禍首很可能是

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

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

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