我必须编写一个检查密码的程序。
WHERE
”The password is valid
”。 该程序仅适用于 if 部分,但不适用于 else 。
那是当我输入 bolt 时,它会显示正确的信息
但是当我输入 bolt 以外的内容时,它不会显示“The password is invalid
”
我被告知要测试使用 char.At 的所有四个字符。
The password is invalid
答案 0 :(得分:2)
使用equalsIgnoreCase()
检查更具可读性:
String password= input.next();
if(password.equalsIgnoreCase("bolt"){
System.out.println("The password is valid");
}
else{
System.out.println("The password is invalid!");
}
答案 1 :(得分:2)
为什么不直接检查字符串相等性?
String password= input.next();
if("bolt".equals(password))) {
System.out.println("Valid password");
} else {
System.out.println("InValid password");
}
如果您还认为equalsIgnoreCase()
或BOLT
有效,请使用Bolt
。
如果您需要在没有equals
的情况下实现此功能,则可以使用以下内容:
if (password != null &&
password.length() == 4 &&
(password.charAt(0) == 'B' || password.charAt(0) == 'b') &&
...) {
System.out.println("Valid password");
} else {
System.out.println("InValid password");
}
答案 2 :(得分:1)
我使用string.matches
函数接受正则表达式作为参数。 (?i)
有助于进行不区分大小写的匹配。
if(string.matches("(?i)bolt"))
{
System.out.println("Valid password");
}
else {System.out.println("InValid password");}
答案 3 :(得分:1)
有关更新的问题:
String password = input.next().toLowerCase();
String correctPassword = "bolt";
if (password.length() != correctPassword.length()) {
System.out.println("Not valid");
return;
}
for (int i = 0; i < correctPassword.length(); i++) {
if (password.charAt(i) != correctPassword.charAt(i)) {
System.out.println("Not valid");
return;
}
}
System.out.println("Valid");
在你的代码中有两个问题,
1.你的for循环没有任何意义,因为你已经在第一次迭代中检查了整个密码。第二次迭代会导致IndexOutOfBoundsException
。
if
(检查字符“T”或“t”)。
希望这会有所帮助..
答案 4 :(得分:0)
你正在做的事情没有多大意义。您应该使用字符数组然后按顺序检查。另一个小问题是else
块与最后一个if
语句相关联。应该将其附加到第一个if
。这是一个需要智能地使用大括号的地方。