0

I created a program To return if a String entry is equal to "password". Sort of a password program. As you can see from the output the entry and expression are both equal. Why then does it print wrong??

package Main;
import java.io.*;
 class password
   {
       public void password() throws IOException
       {
           BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
           System.out.println("enter the password");
           String entry = br.readLine();
           System.out.println("printing the entry: " +entry);
           String password = "abc";
           if (entry== password)System.out.println("Correct");
           else System.out.println("Not a match");
        }
    }

output:
enter the password
>abc
printing the entry: abc
Not a match

Please rectify the program and suggest a better method of doing it

2
Contributors
3
Replies
4
Views
6 Years
Discussion Span
Last Post by ~s.o.s~
0

When it comes to reference types, == compares references and not the actual objects. If you want a logical comparison (equal check), use the equals method of the String class. Read Javadocs for more details.

0

When it comes to reference types, == compares references and not the actual objects. If you want a logical comparison (equal check), use the equals method of the String class. Read Javadocs for more details.

Please elaborate

0

The equality operator compares references.

String str = "hello";
String anotherStr = str;
System.out.println(str == anotherStr); // true

If case you need logical equality check, use the equals method of the String class.

String line = readLine(); // user enters 'mypassword'
String pwd = "mypassword";
System.out.println(line == pwd); // false
System.out.println(pwd.equals(line));  //logical equality; true

If it's still confusing, I'd highly recommend you read the excellent tutorials available at Sun along with the book Head First Java.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.