在字符串中检查字母或0的问题。[JAVA]

时间:2013-07-19 16:54:06

标签: java loops if-statement for-loop

我是java的新手,遇到了一个我似乎无法解决的问题。

我正在努力确保字符串中没有字母或0的数字。如果字符串只包含数字,我希望它返回true,如果有字母或0,我希望它返回false。

请注意,我不希望任何对我来说太复杂的事情,例如RegEx,所以如果你能尽可能保持基本,我将非常感激。

离。 “123456789”= true ,“98765x321”= false ,“46813079”= false

到目前为止,这是我的代码:

private static boolean isCorrectSyntax (String str){

    boolean trueCheck = false;
    int i = 0;
    char charCheck = str.charAt(i);

    if(str != null && str.length() == 9){

        for(i = 0; i < 9; i++){

            if (Character.isLetter(charCheck) || charCheck <= 0){
                trueCheck = false;
                break;
            }
            else{
                trueCheck = true;
            }   
        }   
    }

3 个答案:

答案 0 :(得分:3)

您可以先检查indexOf() 0,如果它的计算结果为-1,这意味着该字符串不包含0,那么请尝试parseLong()字符串并处理NumberFormatException。如果有异常,那么您的测试将失败。

如果数字字符串很大,你可以选择BigInteger(),但我认为这样做会有点过分。

这些是指针,您可以围绕此开发代码。

答案 1 :(得分:1)

您可能想要使用以下内容;

String str = "1234XX";        
Pattern pattern = Pattern.compile(".*[^1-9].*");
System.out.println(!(pattern.matcher(str).matches()));

希望有所帮助。

答案 2 :(得分:0)

您可以在循环之前将charCheck设置为true,并在必要时仅将其设置为false。此外,您只需在整个循环中使用一个字符。您需要在循环的每次迭代中将其设置为下一个字符,而不是在循环开始之前的一次。

boolean trueCheck = true;
int i;
char charCheck;

if (str != null && str.length() == 9) {

    for (i = 0; i < 9; i++) {

        // get the current character
        charCheck = str.charAt(i);

        // if the character is a letter or 0
        // the check is false, so set the flag and stop checking
        if (Character.isLetter(charCheck) || charCheck == '0') {
            trueCheck = false;
            break;
        }
    }   
}