Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CSV文件的Java嵌套条件解析_Java_Parsing_Csv_Import - Fatal编程技术网

CSV文件的Java嵌套条件解析

CSV文件的Java嵌套条件解析,java,parsing,csv,import,Java,Parsing,Csv,Import,如果我的示例数据是如下所示的CSV文件: a,,,b, 36,28,90,5,24 最好的方式是什么 myStringArray=[a[36,28,90],[b[5,24]] 或 myStringArray1={a,b};//这部分我可以做 myStringArray2={36,28,90},{5,24} 我使用的是基于Java的处理,但我的问题更多的是关于Java的一般功能,所以请原谅我的代码格式化,如果它看起来不正确的话 这是我的导入类: class dTable { int row

如果我的示例数据是如下所示的CSV文件:

a,,,b,
36,28,90,5,24
最好的方式是什么

myStringArray=[a[36,28,90],[b[5,24]]

myStringArray1={a,b};//这部分我可以做
myStringArray2={36,28,90},{5,24}

我使用的是基于Java的处理,但我的问题更多的是关于Java的一般功能,所以请原谅我的代码格式化,如果它看起来不正确的话

这是我的导入类:

class dTable {

  int rowCount;
  int columnCount;
  String[][] data;
  String filename;

  dTable(String _filename) {
    filename = _filename;
  }

  void load() {
    String[] rows = loadStrings(filename);
    String[] columns = split(rows[0], ',');
    rowCount = rows.length;
    columnCount = columns.length;

    //set the size of the matrix
    data = new String[rows.length][columns.length]; 

    // add column pieces into data matrix
    for (int i = 0; i < rows.length; i++) {
      String[] colEntries = split(rows[i], ',');
      for (int j = 0; j < columns.length; j++) {
        data[i][j] = colEntries[j];
      }
    }


  }
}
类数据表{
整数行数;
int列计数;
字符串[][]数据;
字符串文件名;
dTable(字符串\u文件名){
文件名=_文件名;
}
空荷载(){
String[]行=加载字符串(文件名);
字符串[]列=拆分(行[0],',');
rowCount=rows.length;
columnCount=columns.length;
//设置矩阵的大小
数据=新字符串[rows.length][columns.length];
//将列片段添加到数据矩阵中
for(int i=0;i
下面是我在一个解析类中的未工作尝试:

class dParse {

  String[] bMaj;
  String[][] bMin;

  dParse() {
  }

  void getList(int integer) {

    ArrayList dMaj = new ArrayList();
    ArrayList dMin = new ArrayList();

    String[][] minimums;

    String[] _rowNameMaj = table.data[0]; //get data first to match
    String[] _rowName = table.data[integer]; // get data to fill

    //get first variables
    for (int i = 0; i<_rowName.length; i++) { //iterate over 
      ArrayList tempMin = new ArrayList();
      if (trim(_rowNameMaj[i]).length() != 0) {
        dMaj.add(_rowNameMaj[i]);
      }
    }

    //place maj values from arraylist into an array
    String[] _bMaj = (String[]) dMaj.toArray(new String[0]);
    bMaj = _bMaj; //set value to global variable


    //min values
    ArrayList bigOne = new ArrayList();
    int count = 0;
    for (int i = 0; i<_rowName.length; i++) { //iterate over 
      ArrayList tempMin = new ArrayList();
      if (trim(_rowNameMaj[i]).length() != 0) { //check if box is not empty & set count to 0
        //tempMin = dMaj.get(i); // set inner list
        //println("maj " + count + " " + _rowNameMaj[i]);
        tempMin.add(_rowName[i]);
        count++;
        //println("min" + count + " " + tempMin);
      }
      else if (trim(_rowNameMaj[i]).length() == 0) { //if next box is empty, add to count
        count++;
        tempMin.add(_rowName[i]);
        //println("min" + count + " ");
      }
      minimums = new String[_bMaj.length][];

     /various unworking attempts below

      //place min values from arraylist into an array
      //String[] temp_bMin = (String[]) tempMin.toArray(new String[0]);
      //fl[] = append((new String(temp_bMin)), fl);

            for (int n = 0; n< bMaj.lenth; n++ ) {
       count[level]mums[n] = (String[]) toArray(new String[0]);
//        println(minimums[n]);
//      }
      tempMin.clear(); //clear temporaryList
    }

  }

  String[] getMaj() {
    return bMaj;
  }

  String[][] getMin() {
    return bMin;
  }
}
dParse类{
字符串[]bMaj;
字符串[][]bMin;
dParse(){
}
void getList(整数){
ArrayList dMaj=新的ArrayList();
ArrayList dMin=新的ArrayList();
字符串[][]最小值;
String[]\u rowNameMaj=table.data[0];//首先获取要匹配的数据
String[]_rowName=table.data[integer];//获取要填充的数据
//获取第一个变量

对于(int i=0;iDimitar…也许一个库(如或该页面上其他库的链接)会很有用?但是,如果您坚持使用自己的CSV解析器,请查看该类。

伪代码:

class Item { 
    String name;
    List<String> values;
}

String[] names = line1.split(",");
String[] data  = line2.split(",");

List<Item> items = new ArrayList<Item>();
Item curItem = null;

for (int i=0; i<data.length, i++) 
{
    if (names[i].isEmpty())
    {
        if (curItem == null) throw "first name is empty";
    }
    else
    {
        curItem = new Item();
        items.add(curItem);
    }
    curItem.values.add(data[i]);
}
类项{
字符串名;
列表值;
}
字符串[]名称=line1.split(“,”);
String[]data=line2.split(“,”);
列表项=新建ArrayList();
Item curItem=null;
对于(int i=0;i