-1

if ステートメントは配列内の文字列を読み取らない - tokens[i] したがって、if の後の条件は実行されません。文字列「hot」は読み取れません。どうしてこんなことに?助けてください!ありがとう。

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!");
        }
   }     

} 
4

2 に答える 2

6

関数を使用しString.equals(String otherString)て文字列を比較します。

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

==オペレーターではありません。

その理由は、==オブジェクト参照/プリミティブを比較するだけで、String の.equals()メソッドが等しいかどうかをチェックするためです。

于 2013-09-21T12:08:25.243 に答える
1

==s の比較に -Operator を使用しているため、これは機能しませんString

-Operator==は、オブジェクト参照が同じかどうかをチェックします。"hot"は と同じ参照ではないため、これは当てはまりませんtokens[i]

Object.equals()オブジェクトの値を比較します。のString場合、文字の組み合わせが同じかどうかを比較します。詳細については、 APIを確認してください。

を使用しますtokens[i].equals(String str)

大文字と小文字の区別が問題にならない場合は、次の方法を使用してください: string.eqaulsIgnoreCase(String anotherString)。

于 2013-09-21T12:14:21.550 に答える