나는 MovieDatabase라는 프로젝트에서 일하고 있습니다. searchTitle, searchGenre, searchDirector 및 searchYear 메서드의 경우 메서드는 하위 문자열을 가져 와서 데이터베이스의 어느 위치에서나 찾을 수 있는지 확인합니다. 지금 내가 컴파일 한 것은 BlueJ 프로젝트의 메서드를 테스트 할 때 null 만 반환합니다. 그들이 옳은 것을 돌려 주도록 바꾸려면 어떻게해야합니까? 여기에 내 코드 (추신 get 메소드를 처리하는 별도의 클래스라고 MovieEntry있다) 전체에 : 당신은 System.out.println
를 제거 다음과 같은 성격의 방법에 대한 혼란 반환 값
public ArrayList<String> search*(String substring){
을 수정해야합니다
public class MovieDatabase
{
private ArrayList<MovieEntry> Database = new ArrayList<MovieEntry>();
public MovieDatabase(){
ArrayList<MovieDatabase> Database = new ArrayList<MovieDatabase>(0);
}
public int countTitles() throws IOException{
Scanner fileScan;
fileScan = new Scanner (new File("movies.txt"));
int count = 0;
String movieCount;
while(fileScan.hasNext()){
movieCount = fileScan.nextLine();
count++;
}
return count;
}
public void addMovie(MovieEntry m){
Database.add(m);
}
public ArrayList<String> searchTitle(String substring){
for (MovieEntry m : Database)
if(m.getTitle().contains(substring)){
System.out.println(m.getTitle());
}
return null;
}
public ArrayList<String> searchGenre(String substring){
for (MovieEntry m : Database)
if(m.getGenre().contains(substring)){
System.out.println(m.getGenre());
}
return null;
}
public ArrayList<String> searchDirector (String substring){
for (MovieEntry m : Database)
if(m.getDirector().contains(substring)){
System.out.println(m.getDirector());
}
return null;
}
public ArrayList<MovieEntry> searchYear(int year){
ArrayList<MovieEntry> yearMatches = new ArrayList<MovieEntry>();
for (MovieEntry m : Database) {
if (m.getYear() == year) {
yearMatches.add(m);
}
}
return yearMatches;
}
public ArrayList<MovieEntry> searchYear(int from, int to){
ArrayList <MovieEntry> Matches = new ArrayList<MovieEntry>();
for(MovieEntry m : Database){
if(m.getYear() >= from && m.getYear() <= to){
Matches.add(m);
}
}
return Matches;
}
public void readMovieData(String movies){
String info;
try{
Scanner fileReader = new Scanner(new File("movies"));
Scanner lineReader;
while(fileReader.hasNext()){
info = fileReader.nextLine();
lineReader = new Scanner(info);
lineReader.useDelimiter(":");
String title = lineReader.next();
String director = lineReader.next();
String genre = lineReader.next();
int year = lineReader.nextInt();
}
}catch(IOException error){
System.out.println("Oops! Something went wrong.");
}
}
public int countGenres(){
ArrayList <String> gList = new ArrayList<String>();
for(MovieEntry m : Database){
String g = m.getGenre();
if(gList.contains(g) == false){
gList.add(g);
}
}
return gList.size();
}
public int countDirectors(){
ArrayList <String> dList = new ArrayList<String>();
for(MovieEntry m : Database){
String d = m.getDirector();
if(dList.contains(d) == false){
dList.add(d);
}
}
return dList.size();
}
// public String listGenres(){
// ArrayList <String> genreList = new ArrayList<String>();
// return genreList;
// }
}
나는 그것을 시도했다. 그러나 그것은 "symbol - variable m"을 찾거나 찾을 수 없다고 말한다. m은 for-each 루프 내에 있으므로 도달 할 수 없기 때문입니다. –
당신은 파일을 읽고 있습니다 ...하지만 당신은 내가 말할 수있는 것에서 정보를 가져 오지 않을 것입니다, 당신의 arraylists에 무엇이 있는지 확인 했습니까? –