1

可能重复:
如何比较 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循环,因此它们以小写字母开头,因为当我进行较小的更改时程序需要一段时间才能运行。
4

3 回答 3

10
            if (pass == name){

应该

            if (pass.equals(name)){

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

于 2012-12-16T22:03:22.253 回答
0

应使用 equals() 比较字符串

于 2012-12-16T22:05:31.867 回答
0

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

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

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

于 2012-12-16T22:08:54.410 回答