java(2)-1003 我要通过!(20)

本文介绍了一个Java程序案例,通过不同的正则表达式匹配方法来判断字符串是否符合特定格式,包括APAT这类简单模式及更复杂的多段匹配。此外,还讨论了如何利用反射机制来复用方法,并提出了一些改进思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址:https://blog.youkuaiyun.com/bin8632/article/details/50216297

在上次的文章中已经有提及,这个问题我实际上是没有完全作对的。但是嘛......我上网查了查,发现我和正确答案也就差了一点点,我也不知道我究竟错在了什么地方,可能这就是一个教训吧:应该使用原始或者接近原始条件的条件,而不是自己找一些所谓的条件。(有时候必须用推出的条件,这个时候就看这个人的数学能力如何了)

接下来是第二中解法:

public class IWantToPass1 {

    public static void main(String[] args) throws Exception {
        method(IWantToPass.getStringArray());
    }

    public static void method(String[] target) {
        for (int i = 0 ; i < target.length ; i ++) {
            if (judge(target[i])) {
                System.out.println("YES");
            } else {
                System.out.println("NO");
            }
        }
    }


    public static boolean judge(String s) {
        if (Pattern.matches("A*PA+TA*", s)) {    //就像是 APAT这种的也是可以过的
            if (Pattern.matches("PA+T", s)) {    //这种对应的是 PAAAAAT类型的
                return true;
            } else {    //这种情况一定是符合 A*PA+A* 但是不符合PA+T 类型的,举例子的话,APAT还是可以
                String[] splitArray = s.split("P|T");
                int num1, num2, num3;
                num1 = splitArray[0].length();
                num2 = splitArray[1].length();
                num3 = splitArray[2].length();
                return num3 == num1 * num2;
            }
        }else {
            return false;
        }
    }

}

其中的getStringArray调用了之前文章中的方法,实际上method方法应该也是可以进行复用的,我们只需要这样写~~

public static void method(String[] target, Class targetClass, String methodName) throws Exception {
        Method method = targetClass.getMethod(methodName, String.class);
        for (int i = 0 ; i < target.length ; i ++) {
            if ((boolean)method.invoke(null, target[i])) {
                System.out.println("YES");
            } else {
                System.out.println("NO");
            }
        }
    }

emmm实际上规范起见的话,judge方法的参数可以用一个接口来限制起来,这样的话,可能更好吧。

调用的代码变成了:

public static void main(String[] args) throws Exception {
        method(IWantToPass.getStringArray(), IWantToPass1.class, "judge");
    }

就这样~~

嘛....毕竟是抄的网上的东西,严格意义上不算是原创233(在文章的前后加上原文地址以表示心虚)

 

原文地址:https://blog.youkuaiyun.com/bin8632/article/details/50216297

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值