2012-05-13 2 views
1

Это мой код:если() не работает

Log.d("inf", loader); 
if (loader == "Klasse"){ 
    Log.d("inf", "Klasse yes"); 
    OPTS = new String[] { //Something }; 
} else { 
    Log.d("inf", "Klasse no"); 
    OPTS = new String[] { //Something }; 
} 

В первой линии, выход именно «Klasse», но следующий вывод каждый раз «Klasse нет». Строка загрузчика устанавливается следующим образом:

String loader = ""; 
Bundle exta = getIntent().getExtras(); 
    if(exta !=null) { 
     try { 
      json = new JSONObject(exta.getString("json")); 
      loader = exta.getString("order"); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 

У вас, ребята, есть идея, что не так?

+1

Строки должны быть сделано с помощью '.equals' – user1329572

+0

или .compareTo() – Blackbelt

+0

возможного дубликата (HTTP [Java сравнения строки?]: //stackoverflow.com/questions/995918/java-string-comparison) –

ответ

11

Оператор сравнения == сравнивает ссылки, а не значения. Вам нужно сравнить значения, поэтому необходимо использовать метод equals().

if (loader.equals("Klasse")) 
+0

Хорошо. Теперь я знаю, что немного отсталый: D Обычно я использую C# и т. Д. Спасибо за помощь! – Styler2go

+1

Да, это классическая ошибка C#/Java. –

+1

Или вы могли бы сначала «intern()» первыми. – 11684

0

Существует разница между идентичностью (==) и равенства (equals()). Тесты идентичности для того, являются ли указатели объектов одинаковыми, поэтому почти никогда не бывает правильными. Равенство проверяет, одинаковы ли значения «значения» объекта, поэтому это почти всегда то, что вам нужно.

+0

Почему, например, язык C# используется для равенства? – Styler2go

+2

@ Styler2go Спросите себя, когда вы в последний раз хотели сравнить две строковые ссылки для идентификации? –

+0

Я думаю, что в C# Java '==' будет '===', не так ли? – Styler2go

0

Сравнение строк всегда должно быть выполнено с помощью метода equals.

if(loader.equals("Klasse")) { .... } 

Это происходит потому, что строка является классом и с помощью «==» вы проверить, являются ли они тот же объект, который они нет. Equals проверяет, что строки, которые вы сравниваете, равны.

0

если == или === не работает, используйте .equals

сравнения
+1

=== is javascript – JakeWilson801

+0

Спасибо за исправление этого. – Klinetel

Смежные вопросы