2015-02-08 52 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