問題解決了,我最終需要一個單獨的數組位置計數器。謝謝您的幫助! 我正在寫一個小型應用程序,它接受一個字符串,將每個字符串處理成7位二進制代碼,然後根據字符串填充音樂等級。例如,如果我有二進制1000100,在C Major的鍵中,它會給我C和G(C 0 0 0 G 0 0)的音符。在Java中的二維不規則數組上出現異常
我遇到了一個需要輸入String [](其中每個元素都是單個字符值爲二進制值,7位)並且在字符串本身中處理每個單獨字符的特定代碼的問題並存儲字符串中發生1的索引號。例如,串1000100將輸出1和5
下面是確實,該方法:
public static String[][] convertToScale(String[] e){
String[][] notes = new String[e.length][]; //create array to hold arrays of Strings that represent notes
for(int i = 0; i < e.length; i++){
notes[i] = new String[findOccurancesOf(e[i])]; //create arrays to hold array of strings
for(int x = 0; x < e[i].length(); x++){
if((e[i].charAt(x)) != 48){ //checks to see if the char being evaluated is 0(Ascii code 48)
notes[i][x] = Integer.toString(x + 1); // if the value isn't 0, it fills in the array for that position.the value at x+1 represents the position of the scale the note is at
}
}
}
return notes;
}
這裏是作爲代碼使用來獲得的1的出現在E [1]:
public static int findOccurancesOf(String s){
int counter = 0;
for(int i = 0; i < s.length(); i++) {
if(s.charAt(i) == 1) {
counter++;
}
}
return counter;
}
我遇到的問題是使用convertToScale方法。當使用「Hello world」作爲我的輸入時(輸入在被任何一種方法處理之前被轉換爲7位二進制數據),它首次通過第二次for-each循環,但在它嘗試陣列中填充另一點,它引發
java.lang.ArrayIndexOutOfBoundsException:3
編輯:這發生在convertToScale方法的線notes[i][x] = Integer.toString(x + 1);
。在嘗試下面的建議更改後,我多次運行調試程序,並且仍然在同一行發生同樣的錯誤。 findOccurancesOf方法返回正確的值(當評估H(1001000)時,它返回2.)所以讓我困惑的是,當它填充數組中的第二個點時,超出界限異常就會出現。
而且,隨時告訴我,如果別的是瘋了還是我的語法是壞的。謝謝!
調試你的代碼,你會在更短的發現問題超過20秒。 – Maroun 2014-11-23 08:56:43
請指出此異常在哪一行發生。 – Henry 2014-11-23 08:56:53
調試是我嘗試的第一件事,那就是我最困惑的東西!我更新了錯誤發生線的問題。謝謝:) – DFXLuna 2014-11-23 19:23:14