Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法返回ArrayList_Java - Fatal编程技术网

Java 无法返回ArrayList

Java 无法返回ArrayList,java,Java,我的一个项目有问题。这是一个电影的虚拟数据库。我有两个类,MovieEntry small,用于个人条目和MovieDatabase large,以及下面的代码。返回ArrayList时出错,例如在searchYear中。它说不兼容的类型。为什么我不能返回ArrayList import java.util.ArrayList; import java.util.Scanner; import java.io.*; public class MovieDatabase { private

我的一个项目有问题。这是一个电影的虚拟数据库。我有两个类,MovieEntry small,用于个人条目和MovieDatabase large,以及下面的代码。返回ArrayList时出错,例如在searchYear中。它说不兼容的类型。为什么我不能返回ArrayList

import java.util.ArrayList;
import java.util.Scanner;
import java.io.*;

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<MovieEntry> searchTitle(String substring){
       for (MovieEntry title : Database)
          System.out.println(title);
          return null;
    }

   public ArrayList<MovieEntry> searchGenre(String substring){
       for (MovieEntry genre : Database)
          System.out.println(genre);
          return null;
    }

   public ArrayList<MovieEntry> searchDirector (String str){
       for (MovieEntry director : Database)
          System.out.println(director);
          return null;
    }

   public ArrayList<MovieEntry> searchYear (int yr){
       ArrayList <String> yearMatches = new ArrayList<String>();
       for (MovieEntry m : Database)
       m.getYear(yr);
        if(yearMatches.contains(yr) == false){
           String sYr = Integer.toString(yr);
           yearMatches.add(sYr);
        }
       return yearMatches;
    }

   public ArrayList<MovieEntry> searchYear(int from, int to){
       ArrayList <String> Matches = new ArrayList<String>();
       for(MovieEntry year : Database);
          Matches.add();
       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(FileNotFoundException error){
            System.out.println("File not found.");

        }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(g);
      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(d);
        if(dList.contains(d) == false){
            dList.add(d);
        }
        return dList.size();
     }

     }

    public String listGenres(){
        ArrayList <String> genreList = new ArrayList<String>();
    }




}
当需要ArrayList时,您正在返回ArrayList。 ps:即使你的代码编译了,似乎也有很多错误

public ArrayList<MovieEntry> searchYear (int yr){
    ArrayList <String> yearMatches = new ArrayList<String>();
    for (MovieEntry m : Database)
        m.getYear(yr);
    if(yearMatches.contains(yr) == false){
        String sYr = Integer.toString(yr);
        yearMatches.add(sYr);
    }
    return yearMatches;
}
返回值应该是MovieEntry对象的列表,而不是字符串对象

应该是

ArrayList Years匹配,因为您的方法签名是

ArrayList<MovieEntry> searchYear (int yr)

您将函数声明为返回ArrayList,并且将返回的变量声明为ArrayList。你需要改变其中一个

public ArrayList<MovieEntry> searchYear (int yr){
   ArrayList <String> yearMatches = new ArrayList<String>();
   // ...
   return yearMatches;
}

您的方法签名表示您正在返回ArrayList,但实际上您正在返回ArrayList。

您需要更改searchYear中yearMatches的返回类型。

该方法指定您将返回ArrayList,但您尝试返回ArrayList

将ArrayList更改为ArrayList,它应该可以工作。否则,您必须构造MovieEntry对象才能放入列表中


希望有帮助。

ArrayList与ArrayList不兼容。只是不要键入报税表,但我认为这是不正确的

我想猜测一下,错误在您的searchYear方法中。返回类型为ArrayList,但返回的是ArrayList,因此会出现错误。

让我们详细看看这段代码,就像一个示例:

public ArrayList<MovieEntry> searchYear (int yr){
    ArrayList <String> yearMatches = new ArrayList<String>();
    for (MovieEntry m : Database)
    m.getYear(yr);
     if(yearMatches.contains(yr) == false){
        String sYr = Integer.toString(yr);
        yearMatches.add(sYr);
     }
    return yearMatches;
}

确切的错误是什么?请正确缩进您的代码-这在目前是非常误导的。就我个人而言,我还建议对块始终使用开/闭大括号,但那是另一回事;。非常puzzling@UmNyobe:那是另一种方法。我只是在看这个具体的方法。
public ArrayList<MovieEntry> searchYear (int yr){
    ArrayList <String> yearMatches = new ArrayList<String>();
    for (MovieEntry m : Database)
    m.getYear(yr);
     if(yearMatches.contains(yr) == false){
        String sYr = Integer.toString(yr);
        yearMatches.add(sYr);
     }
    return yearMatches;
}
public ArrayList<MovieEntry> searchYear (int yr){
    ArrayList <String> yearMatches = new ArrayList<String>();
    for (MovieEntry m : Database) {
        m.getYear(yr);
    }
    if(yearMatches.contains(yr) == false){
       String sYr = Integer.toString(yr);
       yearMatches.add(sYr);
    }
    return yearMatches;
}
public List<MovieEntry> searchYear(int year) {
    List<MovieEntry> yearMatches = new ArrayList<String>();
    for (MovieEntry m : Database) {
        if (m.getYear() == year) {
            yearMatches.add(m);
        }
    }
    return yearMatches;
}