我需要将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俱乐部。俱乐部级别需要存储当前俱乐部名称,当前俱乐部吉祥物,俱乐部已知或已知的任何别名的数据。除了应该为类创建的常规方法(例如,构造函数,'setter'和'getters')之外,您还需要根据赋值规范的一般要求来确定此类的适当方法。
答案 0 :(得分:4)
创建一个包含行数据的新类。 在最简单的情况下,您可以创建一个这样的类:
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));
答案 1 :(得分:0)
我不太了解你的问题,但也许你正在寻找这个:
public static void readClub() throws IOException {
BufferedReader clubBR = new BufferedReader(new FileReader(new File("nrlclubs.txt")));
String line = "";
ArrayList<Clubs> clubs = new ArrayList<Clubs>();
while ((line = clubBR.readLine()) != null) {
Clubs club = new Clubs();
String[] value = line.split(",", 3);
club.name = value[0];
club.mascot = value[1];
club.alias = value[2];
clubs.add(club);
}
}