(这可能是重复的,我不知道.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
是否等于迈克。如果是,则打印密码并打破for循环。
pass = chars[a]...
正确的方法吗?当我在没有if
的情况下进行测试时,我将其打印出来并正确打印了所有组合。它确实打印了Mike
,但没有抓到if
。for
循环,所以它们从小写字母开始,因为当我做了一些小改动时程序需要一段时间才能运行。答案 0 :(得分:9)
if (pass == name){
应该是
if (pass.equals(name)){
使用String.equals()方法检查字符串相等性。 ==
运算符只是检查两个引用变量是否引用同一个对象。 equals()方法检查两个字符串是否有意义相等。
答案 1 :(得分:0)
应使用equals()
比较字符串答案 2 :(得分:0)
每天至少出现一次。应该有专门的“关闭问题”选项。不过,这里又一次......
==
运算符测试两个操作数是否是相同的实例。
.equals()
方法比较两个操作数的值,但前提是该类已实现此方法(String
执行此方法),否则其行为与==
(这是Object
类实现它的方式)。