0
如何在下面的代碼中阻止ArrayIndexOutofBoundsException
,同時爲每個記錄轉換數據存儲標頭和值以準備插入查詢。防止Java中的ArrayIndexOutofBoundsException
BufferedReader reader = new BufferedReader(new FileReader("C:\\files\\test.dat"));
HashMap<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();
int lineNumber = 1;
String[] columnName = null;
ArrayList<String[]> value = null; // temp array
String line;
String[] arr;
List<String> headers = null;
while (reader.ready())
if (!(line = reader.readLine()).isEmpty()) {
arr = line.split("[\\r\\n]+");
if (lineNumber == 1) {
lineNumber++;
continue;
}
if (lineNumber == 2) {
headers= Arrays.asList(arr[0].split("\\|"));
value=new ArrayList<String[]>();
}
else
value.add(arr[0].split("\\|"));// create values
lineNumber++;
}
// transform data
for (int i = 1; i < headers.size(); i++) {
ArrayList<String> ar = new ArrayList<String>();
for (int j = 0; j < value.size(); j++)
ar.add(value.get(j)[i]); // <---- Getting error here
map.put(headers.get(i), ar);
}
System.out.println(map);
}
test.dat
具有低於數據。在第4條記錄上面的代碼試圖檢索僱傭後,但沒有數據,因此代碼失敗。
"X"|"Y"|"12345 0000"
"Emp No"|"Emp sal"|"Emp Name"
1|23.4567|"jhon"
2|0.4567|"steve"
3|9.4567|"jhon"
4|123
你在哪一行代碼中得到錯誤? – DNA
索引超出範圍意味着您的邏輯中存在一個錯誤,您要經過數組的末尾。這個例外會告訴你到底發生了什麼。找出你做錯了什麼,並解決它。 – keshlam
您可以使用'length()'方法檢查數組的長度,以確保訪問給定元素的安全性。然後,您需要決定如何處理缺失的數據(例如跳過該記錄,退出或打印錯誤等) – DNA