2013-09-21 46 views
-1

if語句不讀取數組中的字符串 - tokens [i],因此if之後的條件不會執行。字符串「hot」不能被讀取。爲什麼?請幫忙!謝謝。如何比較java中的兩個數組字符串?

public static void main(String[] args){ 

    String str = "Wow! It's getting realy hot in here." ; 
    String delims = "[ .,?!/><;:'_!`~/$/@/#/%/&/|/[/]/{/}/)/(]+"; 
    String[] tokens = str.split(delims); 

    for (int i = 0; i < tokens.length; i++){ 
     if (tokens[i] == "hot"){ 

      System.out.println("Found!"); 
      break; 
     } 
     else { 
      System.out.println("Not found!"); 
     } 
    }  

} 
+5

將字符串與'equals'比較,而不是'=='。 –

+0

與[此帖子]類似(http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java)。 – Frithjof

+1

Nooooooooooo .. please nooooooooo:___( – Maroun

回答

6

使用String.equals(String otherString)函數比較字符串。

if (tokens[i].equals("hot")){ 

不是==運算符。

原因是==只是比較對象引用/基元,其中as String的.equals()方法檢查相等性。

+0

@Suresh確定它工作正常。現在我必須編輯我的代碼,以便在文本中發現字符串「hot」時只顯示「Found」。非常感謝。 – lrayzzor

+0

@lrayzzor很高興,歡迎您。 –

+1

可以將答案標記爲已接受嗎? – lkuty

1

這不起作用,因爲您正在使用== - 操作員比較String s。

== - 操作者檢查對象引用是否相同。情況並非如此,因爲"hot"tokens[i]不同。

Object.equals()比較對象的值。對於String,它會比較字符組合是否相同。檢查API瞭解更多信息。

因此,使用tokens[i].equals(String str)

如果區分大小寫無關緊要,請使用此方法:string.eqaulsIgnoreCase(String anotherString)。

+0

是的,我明白了,非常感謝您提供了明確的信息,試過了,它運行良好。 – lrayzzor