2013-03-26 2 views
0

У меня есть функция, которая передается в строке. Из этого я разделил строку наJava split() проверка, если индекс равен значению

String[] info = s.split("\\s+"); 

Затем я хочу, чтобы первый индекс был знаком плюса (+). Если я вхожу в строке: + другие вещи он утверждает, что + = +

System.out.println("Check if "+ info[0]+ " = +"); 
if(info[0]=="+") { 
    System.out.println("yes"); 
} else 
    System.out.println("no"); 

Это выход я получаю:

Interp> + 
Check if + = + 
no 

Кто-нибудь знает, почему это?

+7

'.equals()', а не '' ==. – Kevin

+0

Возможный дубликат [Как сравнить строки в Java?] (Http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – assylias

ответ

3

При сравнении String s всегда используйте String.equals(String str). == будет сравнивать строки для идентичности памяти, String.equals() будет сравнивать один и тот же контент.

if(info[0].equals("+")) { do stuff.. }

+0

Спасибо! Очень подробное объяснение. –

0

Для сравнения двух Strings вы всегда должны использовать myString.equals(otherstring); В вашем случае это может быть

if(info[0].equalsIgnoreCase("+") { 
    System.out.println("yes"); 
} else 
    System.out.println("no"); 
} 

Эти возможности для струнных:

  • string1.equals(string2) -> возвращает логическое значение
  • string1.equalsIgnoreCase(string2) -> возвращает булево
  • string1.compareTo(string2) -> возвращает -1 если string1 приходит в алфавитном порядке, прежде чем строке2, , если обе строки равны, +1 если строка2 приходит в алфавитном порядке, прежде чем string1

Для объяснения : оператор == сравнивает ссылку на память двух строк, а не содержимое строк.

4

Оно должно быть:

if(info.length > 0 && "+".equals(info[0])) { 
Смежные вопросы