2016-11-12 162 views
0

我需要使用我編寫的isDigit完成allDigits的方法,即 傳遞有效的字符串時,如果字符串的所有字符均爲數字,則返回true,否則返回false。查看字符串是否包含所有數字的方法

到目前爲止,我有:

public static boolean isDigit (char ch){ 
    if (ch >= '0' && ch <= '9') 
     return true; 
    return false; 
} 

public static boolean allDigits(String s){ 
    for (int i =0; i<s.length(); i++) 
     if(isDigit(s.charAt(i)) == true) 
      return true; 
    return false; 
} 

但如果只說

public static void main(String[] args) { 
    String s = "abc123"; 
    System.out.println(allDigits(s)); 
} 

OUTPUT返回true:真

但是應該返回false

ALSO:是我的代碼有效?我覺得這是一個更簡單的方法。 任何幫助表示讚賞感謝

+0

您只是檢查數字是否存在。爲了檢查是否全部是數字,通常更容易檢查是否沒有數字並且使答案反向。 –

+0

關於如何實現這個[這裏]有一個很好的答案(http://stackoverflow.com/questions/273141/regex-for-numbers-only)。希望能幫助到你。 – kingkeamo

+0

如果字符串只包含數字,s.matches(「^(\\ d)* $」)將返回true –

回答

1

你應該檢查每個字符,如果它是數字,則返回false,否則返回true:

public static boolean allDigits(String s) { 
    for (int i=0; i < s.length(); i++) { 
     if (!isDigit(s.charAt(i))) 
      return false; 
    } 

    return true; 
} 

不過來處理這一個更清潔的方式,和我會做的是使用正則表達式:

public static boolean allDigits(String s) { 
    return s.replaceAll("\\d", "").equals(""); 
} 

注意上面的方法治療一個空字符串作爲其所有數字字符。如果你想讓空字符串失敗,那麼將這個邏輯作爲邊界情況很容易。

相關問題