Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.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 为什么要继续说我的列表是空的?_Java_Javafx - Fatal编程技术网

Java 为什么要继续说我的列表是空的?

Java 为什么要继续说我的列表是空的?,java,javafx,Java,Javafx,我正在尝试创建一个Java程序来管理订票系统 我有一门电影课: public class Film { private String title; private Double price; private String ageRestriction; private double rating; private String genre; private String location; private String screenDay; 一个FilmL

我正在尝试创建一个Java程序来管理订票系统

我有一门电影课:

    public class Film {

  private String title;
  private Double price;
  private String ageRestriction;
  private double rating;
  private String genre;
  private String location;
  private String screenDay;
一个FilmList类,根据两个参数(位置和周)创建电影项目和排序的ArrayList

公共类电影列表{
公共电影列表(ArrayList filmArrayList){
this.filmArrayList=filmArrayList;
}
公众电影名单(){
this.filmArrayList=新的ArrayList();
}
公共ArrayList filmArrayList;
公共电影(电影){
this.filmArrayList.add(电影);
}
私人字符串显示位置;
私人电影周;
公共无效设置屏幕周(字符串屏幕日){
this.screenWeek=屏幕日;
}
公共字符串getScreenWeek(){
返回屏幕周;
}
公共位置(字符串位置){
this.showLocation=showLocation;
}
公共字符串getShowLocation(){
返回显示位置;
}
公共可选搜索影片(){
可选movieFounded=filmArrayList.stream().filter(i->i.getLocation().contains(getShowLocation())&&
i、 getScreenDay().contains(getScreenWeek()).findAny();
回归电影;
}

SetSwowLocation参数通过点击按钮进行设置(每个剧院有一个,setScreenWeek通过组合框进行设置)

图形单元与控制台的接口。请注意,如果我按下按钮而没有在组合框中选择任何内容,则会出现错误

主要用于测试。

So

FilmList filmList = new FilmList();
filmList.addFilm
System.out.println(searchFilm().toString());
您的代码有点奇怪,但我想您的意思是将
Film
实例传递给
addFilm
,然后使用
filmList.searchFilm()

反正

filter(
    i -> i.getLocation().contains(getShowLocation()) &&
         i.getScreenDay().contains(getScreenWeek())
)
在这里,您正在筛选
filmArrayList
,其中包含一个单个元素

i.getLocation().contains(getShowLocation())
基本上意味着

i.getLocation().contains(null)
由于
showLocation
字段未初始化。
这同样适用于第二个条件,使用
screenWeek

我真的很惊讶它没有抛出
NullPointerException
,就像

public boolean contains(CharSequence s) {
    return indexOf(s.toString()) > -1;  // NullPointerException at s.toString()
}
但是不管怎样,假设您初始化了这些字段,然后唯一的元素被
过滤器
操作丢弃,这就是为什么您会看到
Optional.empty


显然,您需要一个完整构造的
胶片
实例

final Film filmInstance = new Film(); 
filmInstance.title = "The NullPointerException adventure";
filmInstance.price = 12D;
filmInstance.ageRestriction = "+18";
filmInstance.rating = 18D;
filmInstance.genre = "Horror";
filmInstance.location = "US";
filmInstance.screenDay = "Monday";

filmList.addFilm(filmInstance);

问题出在
FilmList#setShowLocation
方法中。
您正在将
showLocation
分配给自身,
location
参数未使用

public void setShowLocation(String location) {
    this.showLocation = showLocation;
}
这应该是

public void setShowLocation(String location) {
    this.showLocation = location;
}

首先创建一个胶片对象,然后将该对象传递给filmList。addFilm(Film)能否请您添加您正在使用的确切输入。通过查看输出,您的胶片列表似乎是空的,或者您的输入有问题。评论不用于扩展讨论;此对话已结束。
public void setShowLocation(String location) {
    this.showLocation = showLocation;
}
public void setShowLocation(String location) {
    this.showLocation = location;
}