0

我上了这两个课。下面的应该得到一个带有电影的 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

4 回答 4

2

您的 Movie 构造函数需要两个 String 对象和两个 int -

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

但是您传递了四个 String 对象-

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

为什么您尝试将四个 String 值传递给 Movie 构造函数,而不是构造函数所期望的两个 String 和两个 int?通过您的构造函数,您应该按以下方式创建电影对象 -

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

你只需要在你的 Movie 类中有 setter/getter,另外,确保类变量被声明为私有的,并且只能通过适当的 getter 访问。

公共类电影实现可序列化{

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 的 getter 移动到 Movie 类或包含您想要的电影的索引吗?

于 2012-07-05T17:57:33.123 回答
0

问题是您正在尝试使用带有 twoStrings和 twoints的构造函数,而是传递构造函数 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 回答