获取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); 
     } 
+0

如何当它没有逗号是片断CSV内容(,)?? :) – digidude

+0

你是什么意思?这是我解析之前的csv片段 – Jonas

+1

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

你需要把逗号你csv文件和

之间
"OrganisationID","OrganisationCode",,,, 
"1421","RV9HE",,,, 

或者,如果你想使用相同的文件

OrganisationID OrganisationCode 
1421   RV9HE 

然后删除任何多余的线条和空间你需要改变参数分割方法

String[] RowData = line.split("[ ]+"); 
+0

稍有不同,如果您想将原始文件用作输入,请参阅更新后的答案。你需要使用正则表达式来分割一个或多个空格 –

+0

没有抱歉,如果我试图抓住第二行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" 
+0

我不明白为什么添加逗号,我仍然得到java.lang。ArrayIndexOutOfBoundsException:length = 1; index = 1使用上面的代码,为什么我被标记为我的代码和布局是好的? – Jonas