思想:把对象存到数组里
原来的添加方法如下:
public Films addFilm(){
System.out.println("请输入电影名称:");
film.name = sc.next();
System.out.println("请输入导演:");
film.author = sc.next();
System.out.println("请输入主演:");
film.mainActor = sc.next();
System.out.println("请输入时长:");
film.time = sc.nextInt();
return film;
}
public void add() {
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i] == null);
if (arr[i] == null) {
arr[i] = addFilm();
//index = i+1;
break;
}
}
}
问题解析:
每一次调用add()方法时,都调用addFilm()方法,给addFilm里面的属性都
赋了最后一次输入的值,导致前面所有的属性都具有最后一次的值
解决方法:
每一次添加都创建一个新的对象,申请另一个堆空间保存,在添加输入里面创建对象,就可以每一次添加,创建新对象,在堆里申请相互独立的内存。
public Films addFilm(){
Films film = new Films();
System.out.println("请输入电影名称:");
film.name = sc.next();
System.out.println("请输入导演:");
film.author = sc.next();
System.out.println("请输入主演:");
film.mainActor = sc.next();
System.out.println("请输入时长:");
film.time = sc.nextInt();
return film;
}
public void add() {
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i] == null);
if (arr[i] == null) {
arr[i] = addFilm();
//index = i+1;
break;
}
}
}