2016-03-27 13 views
1

処理中私は異なる文字列を含むテキストファイルから読み込もうとしています。 saveStrings関数で処理して比較すると、getファイル内の行が等しくなっているように見えますが、これらは常に異なっています。私は最近、saveStringsを使ってテキストファイルに書き込もうとしましたが、どちらもうまくいきません。処理しているloadStrings文字列は、一見同じであっても、常に異なります

String lines[] = loadStrings("list.txt"); 
    String list[] = {"1", "1"}; 

    void test() { 
     saveStrings("data/list.txt", list); 
     println(lines[0] == lines[1]); //returns false 
     println("1" == "1");   //returns true 
    } 

私は、セットアップ機能でメソッドを呼び出します。

答えて

2

==を使用してStringの値を比較しないでください。代わりにequals()機能を使用します。

println(lines[0].equals(lines[1])); 

==は2つのString値が同じオブジェクトであるかどうかを比較しているのであなたがこれを行う必要があります。 リテラル"1"はそれ自体と等しいので、trueと評価されます。ただし、ファイルから読み込んだ2つの値が同じオブジェクトではないため、==falseと評価されます。

equals()関数は実際にはStringの値の中の文字をチェックし、両方が同じ文字を含む場合はtrueを返します。

これはまた、the Processing referenceで覆われている。

のequals()メソッドを使用し、二つの文字列の内容を比較するために、(a.equals(b)参照)場合のように、代わりの場合(= = b)。 StringはObjectであるため、それらを==演算子と比較すると、両方のStringが同じメモリ位置に格納されているかどうかだけが比較されます。 equals()メソッドを使用すると、実際の内容が確実に比較されます。 (troubleshooting referenceの方が説明が長くなります)

関連する問題