java - 从 csv 文件 Java 中读取数据
问题描述
我想从我的数据集 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;
}
当我运行主类时,它会反复重复该行。我真的不知道我是否做得正确。我尝试按照在线教程进行操作。谁能帮我吗?谢谢
解决方案
问题是您的 read 调用不在 while 循环的测试范围内。
String strLine = "";
String line = reader.readLine();
while ((strLine = line) != null) {
应该是
String strLine = "";
while ((strLine = reader.readLine()) != null) {
这样 while 循环的每次迭代都会对新的读取尝试的结果进行操作
推荐阅读
- c# - 实体框架从列中获取运行总计
- python - 如何使用 Heroku API 停止 Heroku dyno 使其不会重新启动
- algorithm - KMP算法的最佳和最差时间复杂度是多少
- android - Android Jetpack Navigation 启动活动和导航返回功能
- c++ - 我想通过在 C++ 中使用向量来获取用户输入,但我得到了无限循环
- laravel - 使用 Laravel 7 将数组插入数据库
- tkinter - 在从 Entry Widget 获取时不断获取 AttributeError。如何解决这个问题?
- flutter - Flutter 如何在 Listview 构建器中使用的查询快照中应用搜索过滤器
- c# - 使用 c# 将 minimax 算法实现到井字游戏中
- javascript - 如何在 react js(reactjs + electron)组件中使用本机 node_modules?