我是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;
}
}
}
答案 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;
}
}
}