2013-12-23 2 views
-2

У меня есть этот блок кода здесь (Java):Операция Java if, возвращающая как не равную?

void findDistance() { 

       String name1 = new String(); 
       Scanner s = new Scanner(System.in); 
       System.out.print("Enter the name of Starting Location: "); 
       name1 = s.next(); 
       name1 = name1.toLowerCase(); 
       for (int i = 0; i < numCities; i++) { 
        System.out.println(name1); 
        System.out.println(cityNames[i]); 
        if (name1 == cityNames[0]){ 
        // int x = i; 
         System.out.print("x"); 

        } 
        else { 
        //  System.out.println(name1); 
        //  System.out.println(cityNames[i]); 
          System.out.println("y"); 
         } 

       } 

       } 

по какой-то причине, даже если name1 и cityNames [0] равны, если заявление оленья кожа так думать. У меня есть несколько операторов печати, чтобы вернуть значение, чтобы проверить его, и оно печатает как равные. Кто-нибудь знает, почему это происходит?

+2

Использовать метод String equals для сравнения строк вместо ==. –

+0

Я просто думал, что прошло несколько дней с тех пор, как кто-то спросил об этом. –

ответ

4

Измените строку

if (name1 == cityNames[0]){ 

в

if (name1.equals(cityNames[0])){ 

Вы должны использовать equals() или иначе с помощью == вы сравниваете ссылки переменных.

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