2013-07-19 38 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