我需要将 CSV 文件读入对象数组中。 我没有意识到它必须进入其中,而只是制作了一个 ArrayList 。我现在需要解决这个问题,但不知道我在做什么。
这是我将 CSV 文件读入多维数组的代码。
public static void readClub() throws IOException {
BufferedReader clubBR = new BufferedReader(new FileReader(new File("nrlclubs.txt")));
String line = "";
ArrayList<String[]> clubsArr = new ArrayList<String[]>();
while ((line = clubBR.readLine()) != null) {
String[] club = new String[3];
for (int i = 0; i < 3; i++) {
String[] value = line.split(",", 3);
club[i] = value[i];
}
clubsArr.add(club);
}
我的 CSV 文件的片段如下:
Glebe,G Shield,Glebe District
Cumberland,C Shield,Central Cumberland
Annandale,A Shield,Annandale District
University,Lion,Sydney Uni Rugby League Club
Souths,Rabbit,South Sydney,Rabbitohs
Easts,Rooster,Eastern Suburbs,Roosters,Sydney Roosters
Balmain,Tiger,Tigers,Balmain Tigers
Newtown,Jets,Jets,Newtown Jets,Bluebags
第一个单词是团队名称,第二个单词是团队吉祥物,其余是别名。
现在的问题是,我如何做同样的事情,但是使用对象数组(在一个名为 Clubs 的类中)? 我只是花了几个小时试图让它工作,结果却被告知它是错误的,而对象数组正在我的头脑中:'(
谢谢!
编辑: 好吧,实际的问题是这样的: 程序应将数据文件 (NRLclubs.txt) 的内容读入内存中的适当对象数组中(有关该类的描述,请参阅上一页)。不要假设该文件存在。
该类的描述如下: 俱乐部类别:俱乐部类别代表比赛中的单个 NRL 俱乐部。 Club 类需要存储当前俱乐部名称、当前俱乐部吉祥物、俱乐部已知或已知的任何别名的数据。除了应该为类创建的普通方法(例如,构造函数、“setters”和“getters”)之外,您还需要根据赋值规范的一般要求来决定该类的适当方法。
最佳答案
创建一个新类来保存一行数据。 在最简单的情况下,您可以创建一个如下所示的类:
class MyClass {
public String column1;
public String column2;
public ArrayList<String> aliases = new ArrayList<String>();
public void addAliases(String[] a){
for(int i=2;i<a.length;i++){
aliases.add(a[i]);
}
}
}
然后像这样更改您的 ArrayList:ArrayList<MyClass> clubsArr = new ArrayList<MyClass>();
你的阅读部分如下:
while ((line = clubBR.readLine()) != null) {
MyClass club = new MyClass;
String[] value = line.split(",", 3);
club.column1 = value[0];
club.column2 = value[1];
// etc...
clubsArr.add(club);
}
MyClass[] clubs = clubsArr.toArray();
这样,您稍后就可以使用其中一个对象的属性名称(在本例中为 .column2
)而不是您必须记住的某些索引来从其中获取值。
请注意,您可以根据自己的喜好调用类中的属性(例如 clubname
而不是 column1
)
编辑(帮助编辑 OP)
要检查文件是否存在,请替换该行
BufferedReader clubBR = new BufferedReader(new FileReader(new File("nrlclubs.txt")));
与
File file = new File("nrlclubs.txt");
if(!file.exists()){
System.exit(1); // no use to go any further if we have no input
}
BufferedReader clubBR = new BufferedReader(new FileReader(file));
关于JAVA - 如何创建对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16786923/