Java代码段逻辑

时间:2012-02-03 15:32:32

标签: java logic

我看不出我在这里做错了什么。这是我遇到问题的代码:

String tempSummaryString = "SUMMARY:";
for(int z = 0; z<attributeList.size() ; z++)
{
    System.out.println(attributeList.get(z).substring(0,tempSummaryString.length()));
    if(attributeList.get(z).length() > tempSummaryString.length() && 
       attributeList.get(z).substring(0,tempSummaryString.length() == tempSummaryString)
    {
            event.setTitle(attributeList.get(z).substring(tempSummaryString.length(),attributeList.get(z).length()));
    }
}

现在我的问题是程序永远不会进入if(不执行event.setTitle方法)。当我打印

的值时
attributeList.get(z).substring(0,tempSummaryString.length()) 

我得到以下内容:

  

内容:

所以我很难理解为什么它没有进入if!我不明白!

希望有人可以指出我犯的一个愚蠢的错误因为我真的不知道还能做什么

5 个答案:

答案 0 :(得分:1)

不要使用==运算符比较字符串(如attributeList.get(z).substring(0,tempSummaryString.length()) == tempSummaryString中所示),请改用String.Equals方法。

答案 1 :(得分:1)

您已陷入旧的== vs equals()问题。您正在使用==,与javascript不同,它会进行身份比较(即这些相同的对象)。

试试这个:

attributeList.get(z).substring(0,tempSummaryString.length())
    .equals(tempSummaryString) // equals() not ==

此外,您应该考虑使用循环的foreach语法:

for (String attribute : attributeList) {
    if (attribute.substring... // forget about attributeList.get(z) and even z
}

答案 2 :(得分:0)

你的问题是:attributeList.get(z).substring(0,tempSummaryString.length())== tempSummaryString。您比较引用,而不是字符串内容。为此目的使用String.equals(otherString)

答案 3 :(得分:0)

你应该将字符串与equals()进行比较。

attributeList.get(z).substring(0,tempSummaryString.length()).equals(tempSummaryString)

答案 4 :(得分:0)

您要将字符串与==进行比较,而应使用String类“.equals()方法。