验证工作得很好

时间:2014-02-09 23:50:46

标签: java validation

我有这个验证来检查用户输入是不是空白而且只是字母。如果它是空白的,它会捕获它,如果包含数字,它也会捕获它。如果我输入它要求的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;
}

2 个答案:

答案 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)

好吧,您可以使用StringUtils方法isBlankisAlpha来验证您的需求