Java: 来自 readLine() 的错误输入

Java: wrong input from readLine()

我正在从控制台读取输入,但每次我都得到不同的字符串。例如。我正在输入 "Bob",然后检查它是否真的是 "Bob",但事实并非如此。另外,我检查了长度——它们是相同的。我做错了吗?

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());
    }
}

使用 equals 方法比较(非驻留)字符串

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();
    }
}

但是 better/easier 使用 Scanner (https://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html) 因为 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");