2015-02-08 54 views
0

我試圖更改類(Character)的一部分,因此我可以將該結尾更改爲.isDigit作爲示例。就像我可以將型號測試儀更改爲whaterver我想但我不知道我該如何做到這一點。嘗試更改類的一部分Java

public static boolean testText (String password, int length,typeTester) { 
    boolean test = false; 
    for (int count = 0; count <= (length-1); count++){ 
     char resultConverted = password.charAt(count); 
     if (Character.typeTest(resultConverted)) 
     test = true; 
    } 
    return test; 

    } 

編輯: 所以現在有辦法做得更好然後就做這樣的事情來分析一個字:

public static boolean testUpperCase (String password, int length) { 
    boolean upperCase = false; 
    for (int count = 0; count <= (length-1); count++){ 
     char resultConverted = password.charAt(count); 
     if (Character.isUpperCase(resultConverted)) 
     upperCase = true; 
    } 

    return upperCase; 
    } 
    public static boolean testLowerCase (String word, int length) { 
    boolean lowerCase = false; 
    for (int count = 0; count <= (length-1); count++){ 
     char resultConverted = word.charAt(count); 
     if (Character.isLowerCase(resultConverted)) 
     lowerCase = true; 
    } 
    return lowerCase; 

    } 

這只是一個問題,確實發現一個更優雅的替代我有什麼到目前爲止。

+0

你想改變在JDK中的'Character'包裝類的代碼? – 2015-02-08 22:18:45

+1

不能在不擴展的情況下添加或修改某個類的方法,並且'Character'是一個final類,因此無法擴展。總之,您將不得不使用'Character'類中的方法來創建一個方法來滿足您的要求。 – 2015-02-08 22:19:01

+1

'Character'類是'final',所以你不能添加任何東西。但是,您可以在該類之外定義自己的'bool isFancyDancy(char)'方法。如果你想添加一些你的問題,請使用「編輯」功能,而不是發表評論。 – 5gon12eder 2015-02-08 22:19:26

回答

1

這裏是testUpperCase更優雅的變體:

boolean testUpperCase(String password) { 
    for(char c : password.toCharArray()) { 
    if(Character.isUpperCase(c)) { 
     return true; 
    } 
    } 
    return false; 
} 
+0

在這種情況下的遞歸:不。這就像對斐波那契數列使用遞歸一樣。 (人1:讓我們把一個'O(n)'操作變成一個'O(2^n)'操作!人2:我爲什麼沒有想到這一點?)。 – 2015-02-08 23:44:40

+0

@k_g如果您閱讀我的答案,它清楚地表明遞歸解決方案效率低下。當我想到替代品時,我想到了它。但是,我刪除了(不推薦!)方法以避免混淆。 – 2015-02-09 10:31:07

+0

對此感到抱歉。我的困惑是由於這樣一個事實,即確實存在那些試圖爲_everything_使用遞歸的人,因爲他們可以。 – 2015-02-09 21:10:23

0

如果該字符串不等於轉換爲小寫字符串意味着應該有一定的大寫字符。

/* Test if there are any uppercase character in the string */ 
boolean testUpperCase(String password) { 
    return !password.equals(password.toLowerCase()); 
} 

而同樣的測試如果字符串小寫字符:

/* Test if there are any lowercase character in the string */ 
boolean testLowerCase(String password) { 
    return !password.equals(password.toUpperCase()); 
} 
+1

要確定字符串是否包含大寫字符,實際上您必須使用'toLowerCase()',反之亦然。 – 2015-02-08 23:14:08

+0

我更新了我的答案,以顯示如何使用'toLowerCase()'和'toUpperCase()'在問題中實現方法。 – 2015-02-09 00:55:29