-5

我正在尝试验证字段名称是否为空,并且它正在工作

while(name.isEmpty()||!name.matches("^([A-Z*a-z]*(\\s))+[A-Z*a-z]*$"))

当我尝试验证字段编号为空时,它会给出错误。

while (number.charAt(0) != '0' || number.length() < 4 || !number.matches("^[0-9]*") || number.isEmpty())

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
    at java.lang.String.charAt(Unknown Source)
4

2 回答 2

1

编辑:这个应该工作:

while(!number.matches("0[0-9]{3,}"))
于 2013-04-14T13:27:52.580 回答
1

你得到,StringIndexOutOfBoundsException因为你的第一件事

while (number.charAt(0) != '0' || number.length() < 4 || !number.matches("^[0-9]*") || number.isEmpty())

条件是number.charAt(0)如果字符串为空可以抛出异常""。为了摆脱这个问题,搬number.isEmpty()之前number.charAt(0) != '0'


这是为了验证一个以 0 开头且最小长度为 4 个数字的电话号码。

试试这个方法

while (!number.matches("0[0-9]{3,}"))
于 2013-04-14T13:29:32.887 回答