【发布时间】:2020-05-09 20:35:13
【问题描述】:
首先我有一个类似的电影类,
public class Movie {
private int duration;
private String title;
private int year;
private ArrayList <Movie> movies;
public Movie() {
}
public Movie(int duration,String title,int year) {
this.duration = duration;
this.title = title;
this.year = year;
}
public int getDuration() {
return duration;
}
public void setDuration(int duration) {
this.duration = duration;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public String toString() {
return "Duration:" + this.duration + ",, "
+ "Title:" + this.title + ",, " + "Year:"
+ this.year;
}
}
我有一个管理类来做一些操作。我在文本文件中有一些电影,我想将它们存储到 Movie 类型的 ArrayList 中。因此,为此我创建了一个方法,如下所示。
public void textFileToArrayList() {
movie = new ArrayList<Movie>();
BufferedReader br = null;
Movie e = null;
try {
br = new BufferedReader(new FileReader("movies.txt"));
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String line;
try {
while ((line = br.readLine()) != null) {
String data[] = line.split("\t");
e = new Movie();
e.setDuration(Integer.parseInt(data[0]));
e.setTitle(data[1]);
e.setYear(Integer.parseInt(data[2]));
movie.add(e);
}
for(Movie i : movie){
System.out.println(i.getDuration()+","+i.getTitle()+","+i.getYear());
}
br.close();
} catch (IOException io) {
io.printStackTrace();
}
}
我的问题是,当我调试时,我发现解析很好,但由于某种原因,我的电影 ArrayList 总是空的。使用ArrayList 时无法访问我的文本文件。我可以解析它,但我不能存储和打印。
我的完整代码:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
import java.util.stream.Collectors;
import java.util.List;
import sait.mms.problemdomain.Movie;
public class MovieManagementSyste {
ArrayList<Movie> movi = new ArrayList<Movie>();
public MovieManagementSyste() {
textFileToArrayList();
displayMenu();
}
public void textFileToArrayList() {
movi = new ArrayList<Movie>();
BufferedReader br = null;
Movie e = null;
try {
br = new BufferedReader(new FileReader("movies.txt"));
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String line;
try {
while ((line = br.readLine()) != null) {
String data[] = line.split(",");
e = new Movie();
e.setDuration(Integer.parseInt(data[0]));
e.setTitle(data[1]);
e.setYear(Integer.parseInt(data[2]));
movi.add(e);
}
for(Movie i : movi){
System.out.println(i.getDuration()+","+i.getTitle()+","+i.getYear());
}
br.close();
} catch (IOException io) {
io.printStackTrace();
}
}
【问题讨论】:
-
是的,我正在创建新的 Movie 对象,因为我试图访问文本文件的所有行并将它们存储到数组列表中。
-
RE:您的更新。在第一个示例中,它被称为
movi,在第二个示例中,它是movie。确保您正在运行/编译正确的代码。