我构建了一个简单的应用程序,其中包含一个方法,这个应用程序应该检查用户插入的电话号码是否有效。所以我做了以下步骤:在java文件中声明编辑文本将变量引用到xml文件中的变量获取文本和字符串到这个变量编写引用“phone”变量的方法声明(步骤1):private static EditText phone_et_c参考(第 2 步):phone_et_c=(EditText) findViewById(R.id.phone_et_c);获取文本和字符串(步骤 3):String phone=phone_et_c.getText().toString();和mathhoud是(步骤4):public static boolean isValid(String phone){ if ((phone.length()==10)||(phone.charAt(0)==0&&phone.charAt(1)==5)){ return true; } else return false;}我的错误是:10-14 10:06:05.885 5140-5140/com.miara.yagel.maspera E/AndroidRuntime:致命异常:主进程:com.miara.yagel.maspera,PID:5140 java.lang.StringIndexOutOfBoundsException:length=0;index=0 at java.lang.String.charAt(Native Method) at com.miara.yagel.maspera.CreatUserActivity.isValid(CreatUserActivity.java:69) at com.miara.yagel.maspera.CreatUserActivity$1.onClick(CreatUserActivity.爪哇:谢谢!
3 回答
杨魅力
TA贡献1811条经验 获得超6个赞
汪汪一只猫
TA贡献1898条经验 获得超8个赞
更改您的验证方法,以便它检查空值并在必要时修剪文本:
public static boolean isValid(String phone) {
String str = phone.trim();
int len = str.length();
return ((len > 0) && ((len == 10)||(str.charAt(0) == 0 && str.charAt(1) == 5)));
}
弑天下
TA贡献1818条经验 获得超8个赞
问题是您的 EditText 的长度为 0。因此,当您将其转换为 String 时,您的 String 的长度也为 0。所以 indexOf(0) 会抛出一个异常,因为你的 String 是空的。使用像 isEmpty() 这样的方法首先检查它是否为空,然后迭代关于索引。
添加回答
举报
0/150
提交
取消