2013-04-14 118 views
-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) 
+2

空字符串' “”'没有任何字符,所以'的charAt(0)'将抛出'StringIndexOutOfBoundsException'。 – Pshemo

+0

如何验证字符串编号? – user1831131

回答

1

你得到StringIndexOutOfBoundsException因为在你的

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

条件第一件事就是number.charAt(0)可以抛出异常,如果字符串为空""。要摆脱此问题,请在number.charAt(0) != '0'之前移动number.isEmpty()


这是为了验证以0开始的电话号码,并具有4个数字的最小长度。

尝试这种方式

while (!number.matches("0[0-9]{3,}")) 
+0

这是验证一个电话号码,以0开头,最小长度为4个数字。 – user1831131

+0

@ user1831131检查我的更新回答 – Pshemo

+0

我给你+1了。 d: –

1

编辑:这应该工作:

while(!number.matches("0[0-9]{3,}")) 
+0

我试图,当我点击输入号码字段没有写任何信息时,它再次要求我介绍号码,因为它发生在名称字段。 – user1831131

+0

@user你允许哪些号码?你允许负数吗? –

+0

这是验证以0开头的电话号码,其最小长度为4位数。 – user1831131