1

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

我试图确保在一个充满数字的字符串中没有字母或 0。如果字符串只包含数字,我希望它返回 true,如果其中有字母或 0,我希望它返回 false。

请注意,我不想要任何对我来说太复杂的东西,比如 RegEx,所以如果你能保持它尽可能基本,我将非常感激。

前任。“123456789”=,“98765x321”=,“46813079”=

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

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;
            }   
        }   
    }
4

3 回答 3

3

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

如果数字字符串很大,您可以选择BigInteger(),但我认为这将是矫枉过正。

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

于 2013-07-19T16:56:32.127 回答
1

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

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

希望有帮助。

于 2013-07-19T17:03:32.603 回答
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;
        }
    }   
}
于 2013-07-19T17:03:29.313 回答