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数据库,所以可能在获取该数据之前调用此方法?因此试图在空值上调用该方法?
答案 0 :(得分:0)
我用它修复了它:
if(input.length() != 0)
进入charAt结构之前