尽管受到入境

时间:2016-11-12 16:55:32

标签: java android

编辑:所以,我现在已经解决了这个问题。刚添加了输入长度验证,它工作正常。这样做:

if(input.length() != 0){
}

我有这个方法,它接受一个字符串,拆分字符串,将第一个字母转换为字符,然后评估它是字母还是数字。标记[]为1而不是0,因为我接收的字符串有一个空格,当我调试时,类似于" bench"成为""," b"," e"," n"," c"," H&#34 ;.这很奇怪,因为当我调试并逐步完成该方法时,一切正常。为什么我会收到此错误?

当字符串为" Dead-Lift"

// comments are exactly what debug gives me
boolean isExerciseName(String input) { // input: "Dead-Lift"
    String[] tokens = input.split(""); // tokens: {"", "D", "e", "a", "d", + 5 more}

    boolean isExercise = true; // isExercise: true

     char c = tokens[1].charAt(0); // c: 'D' 68
    if (Character.isDigit(c)) { // c:'D' 68
        isExercise = false;
    }

    return isExercise;

}

所以很明显我不会出界,因为c变成了D' D' D'就像它应该的那样。

具体错误是:

 java.lang.ArrayIndexOutOfBoundsException: length=1; index=1

toCharArray看起来似乎是更好的主意,所以在这里就是这样:

boolean isExerciseName(String input) {
    char[] tokens = input.toCharArray(); // tokens: {D, e, a, d, etc}

    boolean isExercise = true;

    char c = tokens[0]; // c: 'D' also, this is the line that errors out
    if (Character.isDigit(c)) {
        isExercise = false;
    }

    return isExercise;

}

我仍然收到错误

我也在调用方法时出错:

if(isExerciseName(itemString) && !itemKey.equals("private_journal)){

现在,我刚注意到的奇怪之处在于,如果我让节目“等待”#34;当我调试并忽略错误消息时,它运行正常。我得到的输入来自我的Firebase数据库,所以可能在获取该数据之前调用此方法?因此试图在空值上调用该方法?

1 个答案:

答案 0 :(得分:0)

我用它修复了它:

if(input.length() != 0)

进入charAt结构之前