猿问

将 EditText 引用为字符串

我构建了一个简单的应用程序,其中包含一个方法,这个应用程序应该检查用户插入的电话号码是否有效。所以我做了以下步骤:

  1. 在java文件中声明编辑文本

  2. 将变量引用到xml文件中的变量

  3. 获取文本和字符串到这个变量

  4. 编写引用“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.爪哇:


谢谢!


慕莱坞森
浏览 275回答 3
3回答

杨魅力

我在其他 naswer 中搜索,发现: EditText getText() 返回空字符串似乎我应该在 Onclick 按钮内写第 3 步。我知道初级错误是我的坏事,谢谢大家

汪汪一只猫

更改您的验证方法,以便它检查空值并在必要时修剪文本: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)));}

弑天下

问题是您的 EditText 的长度为 0。因此,当您将其转换为 String 时,您的 String 的长度也为 0。所以 indexOf(0) 会抛出一个异常,因为你的 String 是空的。使用像 isEmpty() 这样的方法首先检查它是否为空,然后迭代关于索引。
随时随地看视频慕课网APP

相关分类

Java
我要回答