-1
編輯:所以,我現在有點修復它。剛剛添加了一個輸入長度驗證,它工作正常。做這樣的:儘管處於界限,但在字符串 - >字符轉換上出現越界錯誤
if(input.length() != 0){
}
我有了這個方法,它在一個字符串,分割字符串,第一個字母轉換爲字符,然後評估它是否是一個字母或數字。令牌[]是1而不是0,因爲我接收的字符串有一個空格,當我調試時,「bench」變成了「」,「b」,「e」,「n」,「c」, 「H」。這很奇怪,因爲當我調試並通過該方法一切工作正常。爲什麼我得到這個錯誤?
當字符串爲「死提升」
// 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」就像它應該。
錯誤,具體爲:
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)){
現在,我剛纔注意到的一件奇怪的事情是,如果我在調試時忽略錯誤信息而讓程序「等待」,它就會正常工作。我得到的輸入來自我的Firebase數據庫,因此可能在獲取該數據之前調用此方法?因此試圖調用空值的方法?
你的分裂與空字符串的輸入,所以它當然不會拆分任何東西,你的令牌變種會是一個長度爲1的字符串數組,同時你要求回顧一下[1]。 Anywat toCharArray的方式http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#toCharArray() –
@AntonioCalì我認爲split(「」)會分裂這個詞變成信件?調試表明這是正確的。 – theRealOne
而不是使用拆分,你可以簡單地使用input.toCharArray()然後檢查第一個字符 –