2016-03-27 18 views
1

İşleme Farklı dizeleri içeren bir metin dosyasından okumaya çalışıyorum. SaveStrings işleviyle İşleme tarafından okunduğunda ve karşılaştırıldıklarında, satırlar get dosyasında eşit olsa bile, her zaman farklıdırlar. Son zamanlarda saveStrings ile metin dosyasına yazmayı denedim, ama bu da işe yaramıyor.İşleme yüklemeSürümler dizeleri her zaman farklı olsa bile, eşit görünse bile

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 
    } 

Sadece kurulum işlevinde yöntemini çağırın.

cevap

2

String değerlerini karşılaştırmak için == kullanmayın. yerine equals() işlevini kullanın: == iki String değerleri aynı nesne olup olmadığını karşılaştırır çünkü bunu yapmanız gerekir

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

. literal"1" kendi başına eşittir, bu nedenle true değerini değerlendirir. Ancak, bir dosyadan okuduğunuz iki String değeri aynı nesne değildir, bu nedenle ==, false için değerlendirir.

equals() işlevi aslında String değerlerinin içindeki karakterleri denetler ve her ikisi de aynı karakterleri içeriyorsa true değerini döndürür.

Bu

da the Processing reference ele alınmıştır:

gibi) (yöntem eşittir kullanın iki Yaylı içeriğini karşılaştırmak için ise (a.equals (b)), bunun yerine bir (eğer = = b). Bir String bir Object'dir, bu yüzden onları == operatörüyle karşılaştırmak, her iki String'in de aynı bellek konumunda saklanıp saklanmadığını karşılaştırır. Equals() yönteminin kullanılması, gerçek içeriğin karşılaştırılmasını sağlayacaktır. (troubleshooting reference, daha uzun bir açıklama içeriğine sahiptir.)

İlgili konular