我有这个验证来检查用户输入是不是空白而且只是字母。如果它是空白的,它会捕获它,如果包含数字,它也会捕获它。如果我输入它要求的2个字符,则它不会通过。我不知道该如何解决这个问题。
private static boolean isValidSt(String aSt) {
boolean result = false;
try {
if (aSt.length() == 2) {
result = true;
} else if (aSt.length() != 2) {
result = false;
}
for (int i=0; i <aSt.length();){
if (!Character.isLetter(i));{
return false;
}
}
return true;
} catch (NumberFormatException nfex) {
if (aSt == null) System.exit(0);
} catch (Exception ex) {
if (aSt == null) System.exit(0);
}
return result;
}
答案 0 :(得分:4)
我能看到蝙蝠的一个问题是:
if (!Character.isLetter(i));{
return false;
}
你的if之后的那个分号不属于那里。检查条件语句后,如果为真,它将执行直到分号。 return false;
if
不是for
的一部分,并且始终会被执行。
正如David Wallice正确地指出的那样,你也永远不会在你的for
循环中增加计数器,所以如果程序在第一次迭代中总是返回false,那么它确实会陷入困境一个永恒的循环。 for(int i = 0; i < string.length(); i++) { }
- 循环的一种常用语法是:
System.exit(0);
我的第三个也是最后一个注释,这次不会出错,只是形式好:
由于异常,您使用{{1}}退出程序。作为参数传递的零通常仅在程序正常关闭时使用。这是因错误导致的崩溃,因此我使用1或其他内容。
答案 1 :(得分:1)