2017-02-17 2 views
0
import java.util.*; 
import java.lang.*; 

class password 
{ 
    public static void main(String[] args) 
    { 
     int i; 
     String pass,temppass; 
     Scanner s=new Scanner(System.in); 
     System.out.println("Enter Password: "); 
     pass=s.next(); 
     System.out.println("Re-enter password: "); 
     temppass=s.next(); 
     if(temppass==pass) 
     { 
      System.out.println("Sucess"); 
     } 
     else 
      System.out.println("failed"); 
    } 
} 

Я написал этот базовый код на Java в соответствии с моим паролем ввода. Даже если я введу правильный пароль, он переходит к заявлению else, то есть «не удалось». Что мне теперь делать?Как совместить строковые входы

+0

См http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java – Akshay

+0

Кстати, вы не знаете необходимо импортировать 'java.lang. *'. – khelwood

ответ

1

Строка или любой другой объект всегда должен использовать метод equals для проверки равенства.

Вы используете temppass == pass что-то неправильно.

Чтобы сравнить две строки, вы должны использовать temppass.equals(pass).

Вот правильный способ сделать это:

class password 
{ 
    public static void main(String[] args) 
    { 
     int i; 
     String pass,temppass; 
     Scanner s=new Scanner(System.in); 
     System.out.println("Enter Password: "); 
     pass=s.next(); 
     System.out.println("Re-enter password: "); 
     temppass=s.next(); 
     if(temppass.equals(pass)) // This is how equality must be checked 
     { 
       System.out.println("Sucess"); 
     } 
     else 
       System.out.println("failed"); 
    } 
} 

Update:

== Оператор сравнивает ссылки на объекты, а не ценности.

Итак, когда вы выполняете temppass == pass, это сравнение, если обе переменные указывают на тот же объект, что не так. Они указывают на два разных объекта в памяти (несмотря на то, что оба объекта содержат одно и то же значение). Таким образом, проверка возвращает false.

С другой стороны, метод equals проверяет значение объектов и, если значения совпадают, он возвращает true.


Надеюсь, это поможет!

+0

Спасибо, очень сильно сэр, он работал ... Не могли бы вы объяснить мне, что если условие частично, почему (tempppass == pass) не работает, а ваш if (temppass.equals (pass)) работал ..! Еще раз спасибо –

+0

См. Мой обновленный ответ. – anacron

1

Это где проблема лежит:

if(temppass==pass) 

Вы должны использовать equals метод для сравнения строк.

== оператор сравнивает значение две ссылки на объекты видеть, относятся ли они к тому же Струнный например.

Метод equals() сравнивает значения внутри экземпляров строки (в куче) независимо от того, если две ссылок на объекты относятся к тем же строкам, например, или нет.


Источник: What is the difference between == vs equals() in Java?

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