Java - 当变量等于字符串时,如果语句没有捕获[重复]

Posted

技术标签:

【中文标题】Java - 当变量等于字符串时,如果语句没有捕获[重复]【英文标题】:Java - If statement not catching when variable equals string [duplicate] 【发布时间】:2012-12-04 01:28:08 【问题描述】:

可能重复:How do I compare strings in Java?

(这可能是重复的,我不知道.equals。我很抱歉。)

当我决定制作一个 4 字符的字符串生成器时,我今天在 Java 中搞砸了。我让程序生成我定义的所有可能的字符组合。这不是一个项目,我只是想看看这是否可能。我的问题在于字符串检查。我先贴代码。

String text = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
char[] chars = text.toCharArray();
String name = "Mike";
String pass;

outerLoop:
for (int a = 0; a < chars.length; a ++) 
    for (int b = 26; b < chars.length; b++) 
        for (int c = 26; c < chars.length; c++) 
            for (int d = 26; d < chars.length; d++) 
                pass = chars[a]+""+chars[b]+""+chars[c]+""+chars[d];
                System.out.println(pass);
                if (pass == name)
                    System.out.print("password");
                    break outerLoop;
                
            
        
    

嵌套的if 将检查pass 是否等于Mike。如果是,则打印密码并中断 for 循环。

pass = chars[a]... 是正确的方法吗?当我在没有if 的情况下对其进行测试时,我将其打印出来并正确打印了所有组合。它确实打印了Mike,但它没有捕获if。 我还更改了嵌套的 for 循环,使它们以小写开头,因为当我进行细微更改时程序需要一段时间才能运行。

【问题讨论】:

...我们确实需要根据 SO 的规则提出这个问题。它……无处不在! 我为重复道歉,我不知道.equals(),也没有在网上找到。 【参考方案1】:

每天至少出现一次。应该有一个专门针对它的“关闭问题”选项。不过,又来了……

== 运算符测试两个操作数是否是相同的实例

.equals() 方法比较两个操作数的,但前提是类已经实现了这个方法(String 实现了),否则它的行为与== 相同( Object 类就是这样实现的)。

【讨论】:

【参考方案2】:

字符串应该使用equals()进行比较

【讨论】:

真的吗?那我需要和我的教授谈谈。在我把它贴在这里之前,我让他看看这个。 你的“教授”不会在我的工作面试中持续一分钟。 如果有人看,并不意味着他可以看到所有错误。【参考方案3】:
            if (pass == name)

应该是

            if (pass.equals(name))

使用String.equals() 方法检查字符串是否相等。 == 运算符只检查两个引用变量是否引用同一个对象。 equals() 方法检查两个字符串是否有意义地相等。

【讨论】:

恭喜获得 8888 名 :) @Doorknob 哈哈...谢谢:) 我觉得这样一个简单的解决方案真的很傻。当我在发帖前问他这件事时,我的教授也没有注意到这一点。 @MichaelGarrison 我认为您的教授不会知道这一点。他可能刚刚离开让你弄清楚,这样你以后就不会犯同样的错误:)无论如何,现在你知道如何检查字符串相等性。并且还可以读出关于在 java 中比较对象的内容。 :) 为此哇+1。花了一个小时试图弄清楚这一点。当大多数语言不这样做时,为什么 Java 会这样做?我想我期望跨语言兼容性。

以上是关于Java - 当变量等于字符串时,如果语句没有捕获[重复]的主要内容,如果未能解决你的问题,请参考以下文章

java基础之运算符与语句

在 T-SQL CASE 语句的 WHEN 条件中设置变量等于数字时语法不正确[关闭]

JAVA 的不等于语句怎么写

使用try和catch捕获异常

判断变量user是不是等于字符串user的语句是

请问C++中两个字符串的大小是怎样比较的?