获取java.lang.ArrayIndexOutOfBoundsException的Android应用程序csv文件:length = 1; index = 1
我的原始文件夹中有一个csv文件,它有多列,我可以从第一列读取,这似乎产生了csv文件中的所有数据,但这不是我想要的,但是尝试读取下一个时,我得到:获取java.lang.ArrayIndexOutOfBoundsException的Android应用程序csv文件:length = 1; index = 1
java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
我试着写下面的代码不同的方式和我继续得到同样的结果,这里是CSV文件的一个片段:
OrganisationID OrganisationCode
1421 RV9HE
能任何人都请告诉我我哪里出错了,为什么我一直在收到,请?
Caused by:java.lang.ArrayIndexOutOfBoundsException: length=1; index=1 ?
我拉我的头发这一点,它可能是CSV文件中没有列,我刚刚从CSV文件的标题读?
private String OrganisationID;
private String OrganisationCode;
public String getOrganisationID() {
return OrganisationID;
}
public void setOrganisationID(String organisationID) {
OrganisationID = organisationID;
}
public String getOrganisationCode() {
return OrganisationCode;
}
public void setOrganisationCode(String organisationCode) {
OrganisationCode = organisationCode;
}
while ((line = reader.readLine()) != null) {
String[] RowData = line.split(",");
String setId = RowData[0];
String setCode = RowData[1];
HospitalReader cur = new HospitalReader();
cur.setOrganisationID(setId);
cur.setOrganisationCode(setCode);
this.add(cur);
}
你需要把逗号你csv文件和
之间"OrganisationID","OrganisationCode",,,,
"1421","RV9HE",,,,
或者,如果你想使用相同的文件
OrganisationID OrganisationCode
1421 RV9HE
然后删除任何多余的线条和空间你需要改变参数分割方法
String[] RowData = line.split("[ ]+");
稍有不同,如果您想将原始文件用作输入,请参阅更新后的答案。你需要使用正则表达式来分割一个或多个空格 –
没有抱歉,如果我试图抓住第二行cur.setOrganisationCode(RowData [1]);我捕获ArrayIndexOutOfBoundsException和显示2列而不是所有数据的显示,这是更好,但仍然不正确,因为我需要赶上。 – Jonas
我没有看到你的代码有什么问题,所以只是举一个例子,希望你能够发现,如果你的输入有问题。
输入内容(xyz.csv):
"OrganisationID","OrganisationCode"
"1421","RV9HE"
代码:来自https://www.mkyong.com/java/how-to-read-and-parse-csv-file-in-java/
String csvFile = "xyz.csv";
BufferedReader br = null;
String line = "";
String cvsSplitBy = ",";
try {
br = new BufferedReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) {
// use comma as separator
String[] txt = line.split(cvsSplitBy);
System.out.println(txt[0] + "....." + txt[1]);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
输出:
"OrganisationID"....."OrganisationCode"
"1421"....."RV9HE"
我不明白为什么添加逗号,我仍然得到java.lang。ArrayIndexOutOfBoundsException:length = 1; index = 1使用上面的代码,为什么我被标记为我的代码和布局是好的? – Jonas
如何当它没有逗号是片断CSV内容(,)?? :) – digidude
你是什么意思?这是我解析之前的csv片段 – Jonas
csv代表逗号分隔值,典型的csv内容看起来像“1.0.0.0”,“1.0.0.255”,“16777216”,“16777471”,“AU”,“澳大利亚” “1.0.1.0”,“1.0.3.255”,“16777472”,“16778239”,“CN”,“中国” 所以只是确认您的格式是否正确 – digidude