2017-04-18 3 views
0

Ich habe den folgenden Teil des Codes, in dem der Wert der Granularität Block ist. Wenn ich die Werte vergleiche, zeigt es immer NO an. HierGleiche Zeichenfolge nicht gleich

System.out.println(granularity); 
    System.out.println(granularity.equalsIgnoreCase("block")?"YES":"NO"); 

    if(granularity.equalsIgnoreCase("BLOCK")){..... 

ist der Ausgang für den Code:

block 
NO 

Die Granularität Werte aus einer Eigenschaftendatei als

genommen wird
granularity = prop.getProperty("Granularity"); 

Hier wird das Knacken der Eigenschaftendatei:

.....Granularity = block 
...... 

Können einige dy erklären, warum die zwei Saiten nicht gleich sind?

+2

gibt es einen Raum am Ende der Granularität String. mach einen trim(), um beim Comparieren alle Whitespace zu bekommen –

+2

Probiere 'System.out.println ('' + Granularität + '' ');' um die nicht druckbaren Zeichen zu sehen. – Zorglube

+0

Versuchen Sie, Leerzeichen zu entfernen. granularity.replaceAll ("\\ s +", ""). equalsIgnoreCase ("Block")? "YES": "NO"); – Sasang

Antwort

4

Es ist möglich, dass ein Leerzeichen den Vergleich durcheinander bringt. Tun Sie dies am Anfang:

granularity = granularity.trim(); 
+0

Dadurch verwerfen Sie Leerzeichen, die absichtlich am Anfang oder Ende von Eigenschaften platziert werden. Die bessere Lösung ist, den Inhalt der Eigenschaft auf den gewünschten Wert festzulegen. –

2

Eigenschaften von Immobilien-Dateien haben ihren Wert gerade nach dem =

so folgt aus:

Granularity = block 

auf den Wert führt " block". Ändern Sie Ihre Datei:

Granularity=block 
1

Hier ist die Ausgabe für den Code:

Block NO

Wenn Sie sorgfältig Ihre Ausgabe inspizieren Sie weißen Raum nach Wortblock finden so ist es "block ". Bearbeitet nach @ p-j-meisch Kommentar
Sie erhalten " block" von Ihrer Eingabe. Wenn Sie es mit "block" vergleichen, erhalten Sie falsch.

Fügen Sie diese Zeile granularity = granularity.trim() hinzu.

+1

Das Problem ist das Leerzeichen _before_ das Wort Block, nicht _after_ –

0

Es ist eine Best Practice zu trim Strings jedes Mal in Ihrem Code und insbesondere wenn es als eine Eingabe vom Benutzer genommen wird.

granularity.trim().equalsIgnoreCase("block")... 

oder während sie die Speicherung in granularity

String granularity = someInputString.trim(); 
Verwandte Themen