package app;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ValidIdentifierDemo
{
public static void main(String s[])
{
Pattern p=new Pattern.compile("[a-z A-z][a-z A-Z 0-9]+"); // error here
Matcher m=p.matcher("int"); //2 or s[0] in place of int?
if (m.find() && m.group().equals(s[0])) // 3 why s[0] shouldn't i use "int"
{
System.out.println("Valid");
}
else
{
System.out.println("InValid");
}
}
}
为什么我应该在// 2 // 3
中使用s[0]
显示输出
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
at app.ValidIdentifierDemo.main(ValidIdentifierDemo.java:11)
答案 0 :(得分:2)
你必须这样做:
Pattern p = Pattern.compile("[a-z A-z][a-z A-Z 0-9]+");
即。删除new
关键字,因为.compile()
方法会为您生成 Pattern
。
答案 1 :(得分:2)
删除new
关键字。
Pattern p = Pattern.compile("[a-z A-z][a-z A-Z 0-9]+");
Pattern
的构造函数不可访问,并且Pattern
的静态调用初始化了新的Pattern.compile(String pattern)
。
同样调用构造函数需要在构造函数名称后面加括号,并在括号之间包含一个参数列表(如果适用)。