-1

I'm reading input from console, but every time i get a different string. E.g. i'm entering "Bob", then checking if it's really "Bob", and it's not. Also, i checked length - they are identical. Am i doing it wrong?

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Please enter username: ");
        String username = null;
        try {
            username = reader.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }

        if(username == "Bob")
            System.out.println("yes");
        else
            System.out.println("not");

        System.out.println(username.length());
        System.out.println("Bob".length());
    }
}
randomsuffer
  • 353
  • 2
  • 7
  • 15

1 Answers1

1

Use the equals method to compared (non-interned) Strings

public static void main(String[] args) {
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    System.out.print("Please enter username: ");
    String username = null;
    try {
        username = reader.readLine();
        if ("Bob".equals(username))
            System.out.println("yes");
        else
            System.out.println("not");

        System.out.println(username.length());
        System.out.println("Bob".length());
    } catch (IOException e) {
        e.printStackTrace();
    }
}

But it is better/easier to use a Scanner (https://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html) since java 1.5

System.out.println("Please enter username: ");
Scanner scanner = new Scanner(System.in);
String username = scanner.nextLine();
if ("Bob".equals(username))
    System.out.println("yes");
else
    System.out.println("no");
raphaëλ
  • 6,393
  • 2
  • 29
  • 35