错误消息java?从字符串转换到另一个类?

时间:2013-02-10 18:17:35

标签: java

我收到错误消息无法从String转换为Movie。为什么我会收到此错误消息,我应该在第一个if语句中返回什么。我应该把电影叫做电影吗?

public Movie findMovieByName(String inTitle) {
    for (Movie movies : movieArray)
        if (inTitle == movies.getTitle())
            return movies.getTitle();
        else
            return null;

4 个答案:

答案 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()会返回MovieString个对象。

但是根据您的错误消息,我确信您的意思是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)

希望这有帮助。