2015-10-25 217 views
1

如何檢查passCode是否包含數字?我必須使用方法isDigit()
我知道如何只用charAt()檢查一個字符,但不能檢查整個單詞。檢查字符串是否有數字

public class CheckingPasscodes { 
    public static void main (String [] args) { 
     boolean hasDigit = false; 
     String passCode = ""; 
     int valid = 0; 

     passCode = "abc"; 

     // if (?) 
     hasDigit = true; 

     if (hasDigit) { 
      System.out.println("Has a digit."); 
     } else { 
      System.out.println("Has no digit."); 
     } 
     return; 
    } 
} 

回答

4

使用一個循環來檢查每個字符的密碼

hasDigit = false; 
    for (int i = 0; i < passCode.length(); ++i) { 
     if (Character.isDigit(passCode.charAt(i))) { 
      hasDigit = true; 
      break; 
     } 
    } 
-3
for (int i=0;i<=passcode.length();i++) 
char a=passcode.charAt(i); 
if (a.isDigit()) 
    System.out.print("Has digit"); 
else 
    System.out.print("No digits found"); 
+0

這將IF String類有一個「hasDigit工作「 方法。 – Thevenin

+0

@marks我修正了它:-) –

+1

不,它不會以任何方式工作,因爲它會拋出一個'IndexOutOfBoundsException',即使這沒有問題,也沒有大括號。 'char'是一個原始類型,它沒有方法。即使如此,它只會一遍又一遍地分配「a」,然後測試最後一個,這不算作正常工作。這就是爲什麼你總是**使用大括號。 –

5

使用正則表達式可以幫助你:

hasDigit = passCode.matches(".*\\d+.*"); 
+1

貞操點:如果該字符串中還包含[行終止符](https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html# lt),因爲''。默認情況下不匹配它們。如果需要,可以通過用'[\ S \ s]'替換'.'來修復。即'hasDigit = passCode.matches(「[\\ S \\ s] * \\ d + [\\ S \\ s] *」);'。或者更整齊地說,直接使用'Pattern'類來避免'String.matches'總是嘗試匹配整個字符串的限制:'hasDigit = java.util.Pattern.compile(「\\ d」).matcher (密碼).find();' – Boann

相關問題