关于方法参数的程序设计

关于方法参数的程序设计

为什么推荐使用将参数传进方法的形式呢?

如public void addPlayList(Song song);

在方法里面去实例化对象有什么不妥之处吗?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public void addToPlayList() {
System.out.println("请问你想添加几首歌曲?");
int n = sc.nextInt();
// for 添加信息实例化对象
for(int i=1;i<=n;i++) {
System.out.println("请按提示输入第"+i+"首歌曲的信息");
System.out.println("请输入歌曲的ID:");
String id1 = sc.nextLine();
System.out.println("请输入歌曲名:");
String name1 = sc.nextLine();
System.out.println("请输入歌曲的演唱者:");
String songer1 = sc.nextLine();
Song song = new Song(id1,name1,songer1);
}

System.out.println("添加成功");

musicList.add(song);


}


正在回答

登陆购买课程后可参与讨论,去登陆

3回答

方法的实现并不具有唯一性,但是通过将Song对象作为参数传递,可以判断要添加的歌曲song和musicList中已经存在的歌曲是否重复,如果已经存在了,就可以不用在重复添加相同的歌曲了。

  • 櫻絳_ 提问者 #1
    助教,你好,不理解为什么此方法不能阻止数据重复添加?
    2017-08-22 12:30:26
Tender10 2017-08-22 15:49:29

1、重写equals方法就是为了进行判断对象是否相等,所以在判断要添加的歌曲和从musicList中遍历出来的歌曲是否相等,就是调用equals方法进行判断的。

2、musicList可以直接通过for循环遍历即可啊,而且代码实现不具有唯一性,你也可以使用不带参的方法实现。

Tender10 2017-08-22 13:47:29

您好,你这么写也是可以阻止数据重复添加的,只是你这里自己并没有进行重复歌曲的判断。既然是添加歌曲的方法,那么肯定是添加可以添加的歌曲,所以在主方法对应的case语句一下就应该让用户输入,并且判断该歌曲是否重复。如果不重复,那么就调用addToPlayList()方法,将要添加的歌曲对象song传递进去即可完成歌曲对象的添加。而如果是无参方法的话,不管该歌曲能否被添加都会先调用addToPlayList()方法添加歌曲,然后在方法内部再去判断该歌曲可不可以添加。

  • 提问者 櫻絳_ #1
    谢谢助教回答,还有两个问题,问题一:之前的例题演示中,重写了hashcode和equals方法,如果有重复数据则不添加。为什么此处还要再次判断? 问题二:如果使用传参方法,就要在主方法中对某个播放列表的musicList进行遍历,但是主方法里又不能使用迭代器。怎么解决?
    2017-08-22 15:31:36
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师