从CSV数据填充二维数组

时间:2013-11-27 11:06:17

标签: java arrays csv map multidimensional-array

我想将CSV数据文件中的数据分配到二维数组中。我编写了以下代码,但它只适用于1D数组。只要在下面的行中添加额外的方括号,就会发生错误。我是Java新手。请帮忙。

String[] pTEDATA = line.split(cvsSplitBy); // Before
String[][] pTEDATA = line.split(cvsSplitBy); // After

以下是整个代码:

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class pTE {

   public static void main(String[] args) {

  pTE obj = new pTE();
obj.run();

  }

  public void run() {

String csvFile = "C:/Users/marathnayake/Downloads/new.csv";
BufferedReader br = null;
String line = "";
String cvsSplitBy = ",";

try {

    br = new BufferedReader(new FileReader(csvFile));
    while ((line = br.readLine()) != null) {
        if(line.equals("")){
            continue;
        }
        String[][] pTEDATA = line.split(cvsSplitBy);

        //while (pTEDATA != null){
            //System.out.println("[\'" + pTEDATA[0] + "\'], " + "[\'" + pTEDATA[1] + "\'], " + "[\'" + pTEDATA[2] + "\']" );    
        //}

    }

} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
} finally {
    if (br != null) {
        try {
            br.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

  }

}

2 个答案:

答案 0 :(得分:0)

您正在使用返回1D数组的string的split方法。您可以做的一件事是拆分线并获得1D阵列,然后使用这个1D阵列并根据需要将其转换为2D。

答案 1 :(得分:0)

2D阵列与1D阵列不是同一个对象。 String的split方法返回一维数组。

您可以将split函数的结果指定为2D数组的第一个索引的元素:

e.g。

 int numberOfLines = 10;//Replace with actual count
 int numberOfCols = 10;//Replace with actual count
 String[][] allMyLines = new String[numberOfLines][numberOfColumns]();
 //... iterator stuff
 allMyLines[currentLine] = line.split();