我正在使用jcreator来练习java语言。我想出了一个条件语句,如果用户输入=“test”,它将打印出“好的!”信息。这是我的代码:
class conditional {
public static void main (String[] args) {
Scanner user_input = new Scanner(System.in);
String username;
System.out.print("username: ");
username = user_input.next();
if (username == "test") {
System.out.println("okay");
}
else {
System.out.println("not okay");
}
}
上面的代码没有显示任何错误,它没有显示“okay”&& “不好”的消息也是。我不确定我的逻辑有什么问题。
答案 0 :(得分:3)
应使用.equals
而不是==
来比较字符串。所有非原始比较都是如此。例如,您可以将两个int
字段与==
进行比较,但由于字符串不是原始字符,.equals
是正确的选择。
if (username.equals("test")) {
答案 1 :(得分:1)
您应该在这里使用String.equals
。
if (username.equals("test")) {
否则,您要比较对象的身份而不是它们的语义。实际上,这里有两个单独的String
,它们满足语义相等。
答案 2 :(得分:0)
或者如果您想使用==
执行username.intern();
那么您可以使用==
。
注意:仅限FYI推荐的approch。
答案 3 :(得分:0)
如@veer所说,
您可以使用equalsIgnoreCase
/ equals
if (username.equals("test")) { ... }
或者
您可以使用compareToIgnoreCase
/ compareTo
if (username.compareTo("test")==0) { ... }
答案 4 :(得分:0)
要比较字符串,您需要使用.equals()
方法,如果您需要忽略字符串中字母的大小写,您可以使用.equalsIgnoreCase()
if (username.equals("test")){
}
else{
}
答案 5 :(得分:0)
如果你这样做会有效:
import java.util.Scanner;
class Conditional {
public static void main(String[] args) {
Scanner user_input = new Scanner(System.in);
String username;
System.out.print("username: ");
username = user_input.next();
if (username.equals("test")) {
System.out.println("okay");
} else {
System.out.println("not okay");
}
user_input.close();
}
}
一些评论:
equals
来比较String
s。