2014-02-01 2 views
1

Мой поиск часть кода:Подобные переменные не похожи

String neededShop = "not found"; 
float min_price=999999; 
ProductHandler ph = new ProductHandler(this); 
prod=ph.getAllProducts(); 
for(int i = 0 ; i<prod.size(); i++) 
{ 
    if(prod.get(i).getName()==SearchProduct) 
    { 
     if(min_price>prod.get(i).getPrice()) 
     { 
      min_price=prod.get(i).getPrice(); 
      neededShop = prod.get(i).getShop(); 
     } 
    } 
} 

в этой части: if(prod.get(i).getName()==SearchProduct)

prod [0] name "Cat" (id=830032142800) 
SearchProduct "Cat" (id=830032120832) 

Когда сравнения возвращает ложь, несмотря на они похожи. Любые идеи почему?

+0

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

ответ

2

Сравнение строк не получено с помощью оператора ==.
Вы получаете сравнение путем тестирования равно().

Попробуйте это:

if(prod.get(i).getName().equals(SearchProduct)) 
+0

Хмм, когда я пытался равнятьсяIgnoreCase он не работает. Теперь это работает, спасибо – newbie

0

Это не магия чувак, его ява ... :) двойные равноправными == используются для примитивных типов только Для сравнения объектов и необходимо проверить с помощью равных () метод

0

В Java, для объектов сравнения non-primitive тип данных вы должны использовать метод equals().

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