【发布时间】:2021-07-09 21:52:49
【问题描述】:
我正在尝试使用以“,”为分隔符的 CSV 格式将文本文件中的每一行拆分为 name 和 age 变量,然后将它们打印出来.
例如-
输入:
-
文件名 - records.txt
-
莉莉,3
-
安东,5
-
比利,4
-
玛丽,1
输出:
- 文件名:records.txt
- 姓名:莉莉,年龄:3岁
- 姓名:Anton,年龄:5 岁
- 姓名:比利,年龄:4 岁
- 姓名:玛丽,年龄:1 岁
我的问题是我似乎无法弄清楚如何从“记录”中调用“singleRecord”。
public class FileManager {
private List<List<String>> records = new ArrayList<List<String>>();
public FileManager() {
}
public void pullRecordsFromFile(String fileName) {
try (Scanner input = new Scanner(Paths.get(fileName + ".txt"))) {
while (input.hasNextLine()) {
String row = input.nextLine();
String[] parts = row.split(",");
String name = parts[0];
String age = parts[1];
ArrayList<String> singleRecord = new ArrayList<String>();
singleRecord.add(name);
singleRecord.add(age);
records.add(singleRecord);
}
}
catch (Exception e) {
System.out.println("Error: " + e.getMessage());
}
}
public void printRecords() {
for (int i = 0; i < records.size(); i++) {
//Not sure how to print a 'singleRecord' from the 'Records' List
}
}
}
【问题讨论】:
-
你知道如何从列表中获取项目吗?
-
在带索引的
for循环中,使用List::get(int index)方法。也可以使用for-each循环:for (List<String> single : records) { System.out.printf("Name: %s, Age: %d%n", single.get(0), single.get(1)); }。还有访问列表内容的迭代器和流。 -
@AlexRudenko 这种方法级别太低,不能被认为是一个好的设计。 Java 是一种面向对象的语言,请使用对象。
-
@JonathanRosenne 它可能是低级别的,但它可能适合 OP。并且使用 Object 仍然不会向他们展示如何从列表列表中获取元素。
-
@WJS 了解列表列表似乎不是问题。
标签: java file arraylist printing