我收到错误消息无法从String转换为Movie。为什么我会收到此错误消息,我应该在第一个if语句中返回什么。我应该把电影叫做电影吗?
public Movie findMovieByName(String inTitle) {
for (Movie movies : movieArray)
if (inTitle == movies.getTitle())
return movies.getTitle();
else
return null;
答案 0 :(得分:3)
你可以这样做:
public Movie findMovieByName(String inTitle) {
for (Movie movie : movieArray) {
if (inTitle.equals(movie.getTitle()) {
return movie;
}
}
return null;
}
的变化:
String.equals
比较String
内容。 ==
比较对象引用null
Movie
旁注:如果频繁查找,可以在此处使用Map<String, Movie>
。
答案 1 :(得分:1)
您已返回标题而非电影
答案 2 :(得分:0)
public Movie findMovieByName(String inTitle) {
for (Movie movies : movieArray){
if (inTitle.equals(movies.getTitle())){
return movies.getTitle();
}
}
return null;
}
正如我从您的代码中看到的那样,movies.getTitle()
会返回Movie
或String
个对象。
但是根据您的错误消息,我确信您的意思是return movies
而不是return movies.getTitle()
答案 3 :(得分:0)
假设movies.getTitle()
返回一个字符串,您可以(并且应该)使用:
inTitle.compareTo(movies.getTitle()) == 0
当然,返回你正在进入的同一个头衔有什么意义?您可以返回true
值,意味着找到inTitle
的值,或者返回电影(这是您的过程的定义所说的。所以,您的过程将如下所示:
public Movie findMovieByName(String inTitle) {
for(Movie movies : moviesArray) {
if (inTitle.compareTo(movies.getTitle()) == 0)
return movies;
else
return null;
}
}
如果您希望比较不区分大小写,也可以使用compareToIgnoreCase
。
请参阅http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#compareTo(java.lang.String)和http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#compareToIgnoreCase(java.lang.String)
希望这有帮助。