0

可能重复:
Java String.equals 与 ==

我正在使用 jcreator 来练习 java 语言。我想出了一个条件语句,如果用户输入是 = "test",它将打印一个 "okay!" 信息。这是我的代码:

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”&&“not OK”消息。我不确定我的逻辑有什么问题。

4

6 回答 6

3

应该使用.equals而不是比较字符串==。这是所有非原始比较的情况。例如,您会将两个int字段与进行比较==,但由于字符串不是原始的,.equals因此是正确的选择。

if (username.equals("test")) {
于 2012-09-05T05:57:08.333 回答
1

你应该String.equals在这里使用。

if (username.equals("test")) {

否则,您将比较对象的身份而不是它们的语义。实际上,你String这里有两个独立的 s,它们满足语义相等。

于 2012-09-05T05:57:03.917 回答
0

或者如果你想使用==dousername.intern();那么你可以使用==.

注意:不推荐仅供参考。

于 2012-09-05T06:03:54.527 回答
0

如果您这样做,它将起作用:

导入 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比较Strings。
  • 您声明根本没有打印任何结果。您必须在控制台中单击以输入您的答案并以 结束输入Enter
于 2012-09-05T06:27:46.793 回答
0

正如@veer 所说,您可以使用equalsIgnoreCase/equals

if (username.equals("test")) { ... }

或者

您可以使用compareToIgnoreCase/compareTo

if (username.compareTo("test")==0) { ... }
于 2012-09-05T06:10:35.007 回答
0

要比较字符串,您需要使用.equals()方法,并且如果您需要忽略字符串中字母的大小写,您可以使用.equalsIgnoreCase()

 if (username.equals("test")){

 }
 else{

 }
于 2012-09-05T06:13:53.430 回答