-1

I have two JTextFields txf1 and txf2.

In both of them I input the same content (for example: "test").

I made and If statement:

if (txf1.getText() == txf2.getText()) {
    System.out.println("Equal");
} else {
    System.out.println("Error");
}

Why it prints out the error message? I even made a System.out.println(txf1.getText()) and System.out.println(txf2.getText()) and the same looks equal, but prints out the error message?

Alex Shesterov
  • 26,085
  • 12
  • 82
  • 103
Toms Bugna
  • 502
  • 2
  • 10
  • 30

3 Answers3

1

String comparison in Java is done using String#equals, using == means you are comparing the memory reference of the objects, which won't always return true when you think it should.

Try something more like....

if (txf1.getText().equals(txf2.getText())) {

...instead

MadProgrammer
  • 343,457
  • 22
  • 230
  • 366
1

Also you can use this good practice which makes your text box entries efficient.

if (txf1.getText().trim().equals(txf2.getText().trim())) {
Nitesh Verma
  • 1,795
  • 4
  • 27
  • 46
0

Use the equals method to compare Strings. == only compares the object reference. equals compares the actual content of the Strings.

Your code should be something like this:

if (txf1.getText().equals(txf2.getText())) {
  System.out.println("Equal");
} else {
  System.out.println("Error");
}
LostAvatar
  • 795
  • 7
  • 20