2013-07-19 40 views
1

我是新来的java,遇到了一个问题,我似乎无法解决。在字符串中检查字母或0的问题。[JAVA]

我想确保没有字母或0的字符串中包含数字。如果字符串仅包含数字,我希望它返回true,如果有字母或0中的我想它返回false。

请注意,我不想对RegEx等任何过于复杂的事情做任何处理,所以如果您能尽可能保持原样,我会非常感激。

ex。 “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; 
      } 
     } 
    } 
+1

很抱歉,但正则表达式可能看起来吓人,但他们真的很简单,易于阅读。在YouTube上搜索一个啧啧,这是一个大开眼界 – Johannes

回答

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; 
     } 
    } 
} 
+0

感谢这实际上帮助了我最多,这正是我一直在寻找的! – drinkACupOfJava

3

您可以检查indexOf()0第一,如果值为-1,这意味着该字符串不包含0,然后尝试parseLong()字符串并处理NumberFormatException。如果有例外,那么你的测试失败。

如果数字字符串很大,你可以去BigInteger(),但我认为这将是一个矫枉过正。

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

+0

我不知道我将如何短语indexOf()或,我将如何使用numberFormatException,你可以在一段代码示例中使用它们吗?对不起,我只是真的知道到Java哈哈哈。 – drinkACupOfJava

+1

indexOf()== -1是这样做的一些古老的方式,在java> = 1.5中使用.contains()。他们计算出相同的字节码,而后者更具有可读性。 – roippi

+0

谢谢,这帮了很大的忙! – drinkACupOfJava

1

您可能想要使用以下方法;

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

希望有所帮助。

+0

他问没有正则表达式。 – roippi