当前位置: 首页 > 知识库问答 >
问题:

用一些空字段解析CSV。确保数组始终有X项。使用OpenCSV

孔逸春
2023-03-14

我有这样的数据:

红鱼溪雪枕,2013-11-21 17:00:00,-9.9557321125,14.7

然而,有时它的列中有NULL项…请参见最后两个。

布伦达矿山雪枕,2013-11-24 05:00:00,-5.065,363,58,,

这些是system.out.println(DATA);所以我可以看到正在发生的事情。

我使用OpenCSV来解析这个。数据看起来是正确的。

我的错误是:

11-24 00:08:23.894: E/AndroidRuntime(8423): java.lang.ArrayIndexOutOfBoundsException: length=5;索引=5

在这里,我将OpenCSV的所有信息放入数组:

URL siteURL = new URL(bccsvfile);
                BufferedReader in = new BufferedReader(new InputStreamReader(
                        siteURL.openStream()));
                CSVReader csvreader = new CSVReader(in);
                BCSiteDataList = csvreader.readAll();
                csvreader.close();

这里是我循环并添加到字符串数组列表的地方:

ArrayList更新=新的ArrayList();对于(int i=1; i

                  String BCSiteDataResults = bcData[0] + "," + bcData[1]
                          + "," + bcData[2] + "," + bcData[3] + ","
                          + bcData[4] + "," + bcData[5] + "," + bcData[6];

                  updates.add(BCSiteDataResults);
              }

我从上面得到结果(每个逗号后有或没有数据):

红鱼溪雪枕,2013-11-21 17:00:00,-9.9557321125,14.7

这是我对数据的检查:

for (int z = 0; z < updates.size(); z++) {

    String items = updates.get(z);
    chartData = items.split(",");

    //Array initialized
    String chartData[] = new String[7];
   ///FYI I also tried String chartData[] = {"0","0","0","0","0","0","0"}

        //check if there is data... if not, make it 0 ... snowWaterEqu[z] is a double
        if(chartData[5].length() > 0) {
          snowWaterEqu[z] = Double.parseDouble(chartData[5]) / 10;
        } else {
          snowWaterEqu[z] = 0;
        }

        //add the series to chart with achartengine
        SWESeries.add(z, snowWaterEqu[z]); ....

由于输出中有一个逗号(… w, x, y, z或空… w, x,,),为什么我的if不选择分隔符之间的长度为

共有1个答案

孔君浩
2023-03-14

所以这个问题就像我的另一个问题一样简单地回答:即使我的解析器中没有 7 个项目,也用数据填充字符串 [7]?

空和空是不同的。我正在检查 NULL,我需要检查“”。

希望它能帮助别人。

 类似资料:
  • 问题内容: 我尝试@Inject这样的字段(它是一个jar模块,在META-INF下存在空bean.xml): IDataProvider接口 数据提供者实现import javax.enterprise.context.ApplicationScoped; 我尝试注入DataProvider的类 如果我在Wildfly上运行此命令,则注入的dataProvider始终为null(DataCont

  • 我正在尝试使用OpenCSV解析CSV文件。其中一列以YAML序列化格式存储数据,并被引用,因为其中可以包含逗号。它里面也有引号,所以它通过放两个引号来转义。我能够在Ruby中轻松解析这个文件,但使用OpenCSV我无法完全解析它。这是一个UTF-8编码的文件。 这是我的Java片段,它试图读取文件 这是此文件中的2行。第一行没有被正确解析,并且在处被拆分,因为我猜是转义双引号。

  • 样本数据- Header1,full_name,header3,header4 > 20,“Bob,XXX”,“Test”,30 20,“Evan”s,YYY“,”Test“,30 20,“Tom,ZZZ”,“Test”,30 第二行读起来不像预期的那样。因为full_name列值中有一个双引号。 我想忽略这类案件。任何建议都将不胜感激。 使用openCSV Java api进行解析。 编辑: 我

  • 我必须解析一个csv文件,并将其内容转储到mysql表中。 第一输出 在第二个输出中,我需要自定义标头水平对齐。例如 对于第二个输出,它可以是我选择的任何一组标题。然后,我可以使用load data infile将这两个输出数据加载到mysql表中。正在寻找awk脚本来实现这一点。如果你还需要什么,请告诉我。德克萨斯州。

  • 我有以下 JSON 我知道它有“a”和“b”字段,但我不知道其他字段的名称。所以我想以以下类型散集它: 我该怎么做?

  • 所以我从 api 请求中将这些对象放在数组中 我需要的只是标题,这样我就可以在一个div中循环它,并把它传递给子组件,这样我就可以在html部分中循环它