Java 对返回值感到困惑

Java 对返回值感到困惑,java,database-design,return-value,Java,Database Design,Return Value,我在做一个叫做电影数据库的项目。对于我的方法searchTitle、searchGenre、searchDirector和searchYear,这些方法应该取一个子字符串,看看它们是否可以在数据库中的任何地方找到。我现在编译的东西,但是当我测试BlueJ项目中的方法时,它们只返回null。我该怎么做才能让他们归还正确的东西?下面是我的全部代码(另外,还有一个单独的类叫做MovieEntry,它处理get方法): 公共类电影数据库 { 私有ArrayList数据库=新建ArrayList(); 公

我在做一个叫做电影数据库的项目。对于我的方法searchTitle、searchGenre、searchDirector和searchYear,这些方法应该取一个子字符串,看看它们是否可以在数据库中的任何地方找到。我现在编译的东西,但是当我测试BlueJ项目中的方法时,它们只返回null。我该怎么做才能让他们归还正确的东西?下面是我的全部代码(另外,还有一个单独的类叫做MovieEntry,它处理get方法):

公共类电影数据库
{
私有ArrayList数据库=新建ArrayList();
公共电影数据库(){
ArrayList数据库=新的ArrayList(0);
}
public int countTitles()引发IOException{
扫描仪文件扫描;
fileScan=新扫描仪(新文件(“movies.txt”);
整数计数=0;
弦动计数;
while(fileScan.hasNext()){
movieCount=fileScan.nextLine();
计数++;
}
返回计数;
}
公共电影(电影条目m){
数据库。添加(m);
}
公共ArrayList searchTitle(字符串子字符串){
用于(电影条目m:数据库)
if(m.getTitle().contains(子字符串)){
System.out.println(m.getTitle());
}
返回null;
}
公共ArrayList搜索类型(字符串子字符串){
用于(电影条目m:数据库)
if(m.getgreen().contains(子字符串)){
System.out.println(m.getGenre());
}
返回null;
}
公共ArrayList searchDirector(字符串子字符串){
用于(电影条目m:数据库)
if(m.getDirector().contains(子字符串)){
System.out.println(m.getDirector());
}
返回null;
}
公共阵列列表搜索年(整数年){
ArrayList yearMatches=新的ArrayList();
用于(电影条目m:数据库){
如果(m.getYear()==年){
增加(m);
}
}
复赛;
}
公共ArrayList searchYear(int-from,int-to){
ArrayList Matches=新的ArrayList();
用于(电影条目m:数据库){

如果(m.getYear()>=from&&m.getYear()您必须修改以下性质的方法

public ArrayList search*(字符串子字符串){

删除
System.out.println
。而是将匹配项添加到新的字符串数组列表中

public ArrayList<String> searchTitle(String substring){
       ArrayList<String> matches = new ArrayList<String>();
       for (MovieEntry m : Database)
          if(m.getTitle().contains(substring)){
          matches.add(m.getTitle());
        }
       return matches;
    }
public ArrayList searchTitle(字符串子字符串){
ArrayList matches=新的ArrayList();
用于(电影条目m:数据库)
if(m.getTitle().contains(子字符串)){
matches.add(m.getTitle());
}
返回比赛;
}

无论在哪里调用
searchTitle()
,请检查结果arraylist中的
isEmpty()
,以确保结果不是空的。

我尝试过,但它显示“找不到符号-变量m”或者类似的东西。我想那是因为m在for-each循环中,因此无法访问。您正在读取文件…但您从未将信息放在我能说的任何地方,是否检查了您的ArrayList中是否有任何内容?
public ArrayList<String> searchTitle(String substring){
       ArrayList<String> matches = new ArrayList<String>();
       for (MovieEntry m : Database)
          if(m.getTitle().contains(substring)){
          matches.add(m.getTitle());
        }
       return matches;
    }