0

文字列からムービーに変換できないというエラーメッセージが表示されます。このエラーメッセージが表示されるのはなぜですか。最初のifステートメントで何を返す必要がありますか。クラスを映画と呼ぶべきですか?

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

5 に答える 5

3

あなたがすることができます:

public Movie findMovieByName(String inTitle) {
    for (Movie movie : movieArray) {
       if (inTitle.equals(movie.getTitle()) {
         return movie;
       }
    }

    return null;
}

変更点:

  • String.equalsコンテンツの比較に使用しStringます。==オブジェクト参照を比較します
  • すべてnullを確認するまで戻らないでください Movie

補足:ルックアップが頻繁に行われる場合は、ここで代わりにAMap<String, Movie>を使用できます。

于 2013-02-10T18:21:41.573 に答える
1

コードには 2 つの主な問題があります。

最初のものはここにあります:

if (inTitle == movies.getTitle())

== 演算子は、文字列 inTitle のインスタンスを、movies.getTitle() によって返される文字列のインスタンスと比較します。しかし、やりたいことは、2 つのインスタンスに含まれる文字を比較して、それらが同じかどうかを確認することです。このためには、次のように書く必要があります。

if (inTitle.equals(movies.getTitle()))

2 番目の問題は、findMovieByName メソッドが Movie のインスタンスを返す必要があるのに、文字列を返していることです。

return movies.getTitle();

代わりに次のことを行う必要があります。

return movies;
于 2013-02-10T18:28:11.400 に答える
1

映画の代わりにタイトルを返しました

于 2013-02-10T18:22:52.237 に答える
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()

于 2013-02-10T18:21:26.587 に答える
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)

お役に立てれば。

于 2013-02-10T18:31:57.057 に答える