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");
我正在从控制台读取输入,但每次我都得到不同的字符串。例如。我正在输入 "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");