你能帮助findByTitle吗?
我想返回带有给定标题的电影,如果图书馆中没有带有该标题的电影,则返回null。我在最后添加了null,以便编译。
public Movie findMovieByTitle(String title)
{
for(Movie movieToSearch : movies) {
if (movieToSearch.equals(title)){
return movieToSearch;
}else{
return null;
}
}
return null;
}
我需要删除电影方法的帮助。
/**
* removes movie based on title
*/
public void removeMovie(String title)
{ //fix this
Iterator<Movie> it = movies.iterator();
while(it.hasNext()) {
Movie movie = it.next();
if(movie.equals(title))
movies.remove(movie);
}
}
我好像几乎都在那里......但并不完全。我想要退回评级的电影,而不是打印出来。
对于else if语句,我只想返回一个空数组。我怎样才能做到这一点?
public void getMoviesWithStarRating(int rating)
{
Iterator<Movie> it = movies.iterator();
while(it.hasNext()) {
Movie movie = it.next();
if (movie.getStarRating() == rating) {
//return movie;
//Testing output:
System.out.println("Movie: " + movie.getTitle() + " Rating: " + movie.getStarRating());
}
else if (rating < 0 || rating > 4){
//return empty array
//test
System.out.println("invalid entry");
}
}
}
printRatingReport()
{ //代码
}
最后,我想编写一个名为printRatingReport的方法,用于打印每个星级评分的电影数量 样本输出:
4-star movies: 2
3-star movies: 1
2-star movies: 0
1-star movies: 0
Unrated movies: 2
答案 0 :(得分:0)
你可能会使用错误的容器。您可能希望使用Map<String, Movie>
,然后只需拨打movie.get(title)
即可。这保证了你要求的行为。
如果您坚持使用List
使用indexOf(Object o)
方法,但首先需要覆盖电影的equals()
和hashCode()
。
<强>注意:强>
movie
不等于title
AS apple
不等于banana
。
答案 1 :(得分:0)
实际上我觉得你的findMovieByTitle(String title)
方法有问题,如果获得电影标题的方法是getTitle()
,这就是我认为应该是的:
public Movie findMovieByTitle(String title)
{
for(Movie movieToSearch : movies) {
if (movieToSearch.getTitle().equals(title)){
return movieToSearch;
}
}
return null;
}
getMoviesWithStarRating
中的问题是它不应该返回void
,而是应该返回Movie
的列表,例如ArrayList<Movie>
。