2016-03-27 17 views
1

In Verarbeitung habe ich versucht, aus einer Textdatei zu lesen, die verschiedene Zeichenfolgen enthält. Wenn sie von Processing mit der saveStrings-Funktion gelesen und verglichen werden, sind sie immer unterschiedlich, auch wenn die Zeilen in der get-Datei gleich zu sein scheinen. Ich habe vor kurzem versucht, mit saveStrings in die Textdatei zu schreiben, aber das funktioniert auch nicht.Verarbeitung loadStrings Strings sind immer unterschiedlich, auch wenn scheinbar gleich

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 
    } 

Ich nenne nur die Methode in der Funktion Setup.

Antwort

2

Verwenden Sie nicht ==, um String Werte zu vergleichen. Verwenden Sie die equals() Funktion statt:

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

Sie müssen dies tun, weil == vergleicht, ob zwei String Werte das gleiche Objekt sind. Das Literal"1" ist sich selbst gleich, so dass es true auswertet. Zwei String Werte, die Sie aus einer Datei einlesen, sind jedoch nicht das gleiche Objekt, also == wertet dann false aus.

Die Funktion equals() prüft tatsächlich die Zeichen innerhalb der String Werte und gibt true zurück, wenn beide die gleichen Zeichen enthalten.

Dies auch in the Processing reference bedeckt ist:

den Inhalt von zwei Zeichenfolgen zu vergleichen, um die Gleichgestellten() -Methode, wie in if (a.equals (b)) statt, wenn (a = = b). Ein String ist ein Objekt, daher vergleicht der Vergleich mit dem Operator == nur, ob beide Strings am gleichen Speicherort gespeichert sind. Mit der equals() -Methode wird sichergestellt, dass die tatsächlichen Inhalte verglichen werden. (Die troubleshooting reference hat eine längere Erklärung.)

Verwandte Themen