0

私はこれらの2つのクラスを取得しました。以下のものは、映画を含むArrayListを取得する必要があります...

import java.util.ArrayList ;
import android.app.Activity ;
import android.os.Bundle ;

public class UIDActivity extends Activity {

    private static ArrayList<Movie> movieList;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

    }

    public static void main(String String, int 
    int args[]


        ) {     

movieList = new ArrayList<Movie>();
        movie1 = new Movie("Fight Club", "David Fincher", "1999", "3");

        movieList.add(movie1);

    }

    public String getTitle() {
        return title;

    }

    public String getDirector() {
        return director;

    }

    public int getYear() {
        return year;
    }

    public int getRating() {
        return rating;
    }
}

これはMovieクラスで、Movieの属性が何であるかを示します。

import java.io.Serializable ;

@SuppressWarnings("serial")
public class Movie implements Serializable {

    public String title;
    public String director;
    public int year;
    public int rating;

    public Movie(String deTitle, String deDirector, int hetYear, int deRating) {
        title = deTitle;
        director = deDirector;
        year = hetYear;
        rating = deRating;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public void setDirector(String director) {
        this.director = director;

    }

    public void setYear(int year) {
        this.year = year;

    }

    public void setRating(int rating) {
        this.rating = rating;

    }
}

どういうわけか、私が忘れ続けている単純なことを理解することができませんか?!?!Eclipseは、公開ムービーを文字列の4倍に変更したいと考えています...エラーはありませんが、RESTも機能しません。

4

4 に答える 4

2

Movie コンストラクターは、2 つの String オブジェクトと 2 つの int を想定しています -

public Movie(String deTitle, String deDirector, int hetYear, int deRating) 

しかし、4 つの String オブジェクトを渡しています -

 movie1 = new Movie("Fight Club", "David Fincher", "1999", "3");

コンストラクターが期待する 2 つの String と 2 つの int ではなく、4 つの String 値を Movie コンストラクターに渡そうとしているのはなぜですか? コンストラクターを使用して、次のようにムービーオブジェクトを作成する必要があります-

 movie1 = new Movie("Fight Club", "David Fincher", 1999, 3);
于 2012-07-05T18:00:02.350 に答える
1

Movie クラスにのみセッター/ゲッターが必要です。さらに、クラス変数がプライベートに宣言され、適切なゲッターを介してのみアクセスできることを確認してください。

public class Movie は Serializable を実装します {

private String title;
private String director;
private int year;
private int rating;

public Movie(String deTitle, String deDirector, int hetYear, int deRating) {
    title = deTitle;
    director = deDirector;
    year = hetYear;
    rating = deRating;
}

public void setDirector(String director) {
    this.director = director;
}

public String getDirector() {
    return director;
}

...

}

また、List インターフェイスを使用してリストを定義し、インスタンス化を ArrayList として定義します。

于 2012-07-05T17:59:45.150 に答える
0

私の知る限り、静的変数を作成する場合は、その時点で初期化する必要があります。

これを試して:

private static ArrayList<Movie> movieList = new ArrayList<Movie>();

余談ですが、UIDActivityのゲッターをMovieクラスに移動するか、必要な映画のインデックスを含めるべきではありませんか?

于 2012-07-05T17:57:33.123 に答える
0

Strings問題は、 twoと twoを取るコンストラクターを使用しようとしているが、ints代わりにコンストラクターに 4 文字列を渡していることです。

ムービー クラスのコンストラクタのメソッド シグネチャは次のとおりです。

public Movie(String deTitle, String deDirector, int hetYear, int deRating)

コンストラクターを呼び出そうとしている方法が正しくありません。

これ:

movie1 = new Movie("Fight Club", "David Fincher", "1999", "3");

次のようにする必要があります。

movie1 = new Movie("Fight Club", "David Fincher", 1999, 3);
于 2012-07-05T17:59:21.533 に答える