从csv文件Java读取数据

时间:2018-11-30 22:52:55

标签: java file filereader decision-tree

我想从我的数据集train.csv中读取数据,并且尝试使用Java来实现。我的目的是为了将这些原始数据保存到csv文件中,以便从该数据库创建决策树。我有DAO类,在其中实现了一种称为extractTrainingData的方法,在该方法中,我正在编写代码以读取数据。该方法如下。

public static BufferedReader exTractTraningData(File datafile, String ListOfCharacteristics) throws IOException {

    try {
        //create BufferedReader to read csv file
        BufferedReader reader = new BufferedReader(new FileReader(datafile));

        String strLine = "";
        StringTokenizer st = null;

        int lineNumber = 0, tokenNumber = 0;;

        String line = reader.readLine();

        while ((strLine = line) != null) {
            lineNumber++;
            //break comma separated line using ","
            st = new StringTokenizer(strLine, ",");

            while (st.hasMoreTokens()) {
                //display csv values
                tokenNumber++;
                System.out.println("Line # " + lineNumber
                        + ", Token # " + tokenNumber
                        + ", Token : " + st.nextToken()
                         + ": " + line);
            }
            //reset token number
            tokenNumber = 0;;
        }
    } catch (Exception e) {

        System.out.println("Exception while reading csv file: " + e);
    }
    return null;
}

运行主类时,它将重复重复该行。我真的不知道我是否做得正确。我试图遵循在线教程。谁能帮我吗?谢谢

2 个答案:

答案 0 :(得分:3)

问题在于您的读取调用不在while循环的测试范围之内。

String strLine = "";

String line = reader.readLine();

while ((strLine = line) != null) {

应该是

String strLine = "";

while ((strLine = reader.readLine()) != null) {

这样while循环的每次迭代都会根据新的读取尝试进行操作

答案 1 :(得分:1)

您的while循环永远不会更新,因为您永远不会更新line

您可能想要的是

String strLine;
while ((strLine = reader.readLine()) != null) {
    ....
}
相关问题