这里验证我的手机和密码数据,但是在EditText null时单击按钮我的应用程序崩溃!
这就是我的尝试:
String mobile = edtMobile.getText().toString();
String password = edtPassword.getText().toString();
String phone = String.valueOf(mobile);
char c = phone.charAt(0);
if (mobile.length() > 0&& mobile.length() == 10) {
if (phone.length()> 0 && c == '8' || c == '9' || c == '7') {
if (password.length() > 0 && password.length() < 4 && password.length() > 15) {
} else {
Toast.makeText(AuthenticationActivity.this, "Password Character Must Be Between 4 - 15", Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(AuthenticationActivity.this, "Number Must Begin with 9 8 7", Toast.LENGTH_SHORT).show();
return;
}
} else {
Toast.makeText(AuthenticationActivity.this, "Enter Only 10 Digit Number", Toast.LENGTH_SHORT).show();
return;
}
我在下面给出的错误
java.lang.StringIndexOutOfBoundsException:length = 0;索引= 0 at java.lang.String.indexAndLength(String.java:500) at java.lang.String.charAt(String.java:494) at com.example.rahul.logindatabasetask.Activity.AuthenticationActivity $ 1.onClick(AuthenticationActivity.java:42) 在android.view.View.performClick(View.java:4780) 在android.view.View $ PerformClick.run(View.java:19866) 在android.os.Handler.handleCallback(Handler.java:739) 在android.os.Handler.dispatchMessage(Handler.java:95) 在android.os.Looper.loop(Looper.java:135) 在android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Native Method) 在java.lang.reflect.Method.invoke(Method.java:372) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:903) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
答案 0 :(得分:3)
'IndexOutOfBounds'异常的原因
当您尝试获取边界中不存在的索引的值时,会出现此异常(在您的情况下,'phone'Btring的长度为null)。因此,当您尝试获取索引'0'处的值时,它会抛出异常。
<强>解决方案强>
在访问任何字符串值之前,始终先进行空检查和“空字符串”检查。只需执行以下操作:
if(phone!=null && !phone.isEmpty()) {
char c = phone.charAt(0);
}
答案 1 :(得分:2)
将此行char c = phone.charAt(0);
放在if (mobile.length() > 0&& mobile.length() == 10)
由于phone
为空并且您正试图在第一个位置获得角色,因此会出错。
答案 2 :(得分:0)
在获取phone
charAt
字符串是否为空
if(!phone.isEmpty()) {
char c = phone.charAt(0);
}
答案 3 :(得分:0)
检查它是否为空。
edt.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.i("TESTTEST","" + s);
if (s.length() !=0){
// do sth
}
}
@Override
public void afterTextChanged(Editable s) {
}
});