Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 验证工作做得太好了_Java_Validation - Fatal编程技术网

Java 验证工作做得太好了

Java 验证工作做得太好了,java,validation,Java,Validation,我进行此验证以检查用户输入是否为空,并且是否仅为字母。如果为空,它将捕获它,如果包含数字,它也将捕获它。但是,如果我输入它要求的2个字符,它不会通过。我不知道该怎么办 private static boolean isValidSt(String aSt) { boolean result = false; try { if (aSt.length() == 2) { result = true; } else if (a

我进行此验证以检查用户输入是否为空,并且是否仅为字母。如果为空,它将捕获它,如果包含数字,它也将捕获它。但是,如果我输入它要求的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;
}
private静态布尔值isValidSt(字符串aSt){
布尔结果=假;
试一试{
如果(aSt.length()==2){
结果=真;
}else if(aSt.length()!=2){
结果=假;
}

对于(inti=0;i我可以看到蝙蝠右侧的一个问题是:

if (!Character.isLetter(i));{
    return false;
}
if后面的分号不属于那里。检查条件语句后,如果它为true,它将一直执行到分号。
返回false;
不是if
的一部分,并且将始终执行

正如David Wallice正确指出的那样,在
for
-循环中,您也从来不会增加计数器,因此如果程序在第一次迭代中总是返回false,它确实会陷入一个永恒的循环中。对于
for
-循环,非常常用的语法是:

for(int i = 0; i < string.length(); i++) { }
for(inti=0;i
我的第三条也是最后一条,这一次没有任何错误,只是形式良好:


您使用
System.exit(0);
作为异常的结果退出程序。作为参数传递的零通常仅在程序正常关闭时使用。这是由于错误导致的崩溃,因此我会使用1或其他方法。

好的,您可以使用StringUtils方法,并且,为了验证您需要的内容,请不要在标题中使用讽刺来指定c关于你的问题。还有,你的问题是什么?我不完全理解你的问题,但在我看来,从中间删除
返回true;
并依靠
返回结果;
在结尾将为你提供一些正确的陷阱,当字符数不是2时。我的问题是dator正在检查输入的数字和空白输入,但如果我将CA作为状态,它不会移动到我的程序的下一个问题,即“输入地址”。如果你不想陷入无休止的循环中,那么
for
循环中的
i++
将是一个受欢迎的补充
总是会为false,因为数字不是字母,您可能需要aSt.charAt(i).isLetter()或类似的东西(我的java已经生锈)for循环也从不递增我添加了递增,但仍然不起作用我不确定在哪里,但返回false;或者