我之前使用过这个网站来帮助我完成我的许多编程任务,但是我找不到类似于我现在遇到的问题。
我尝试首先使用方法myHobbies
在person类的toString中打印printHobby
数组,并计算用户在{{{0}中执行Hobby的总持续时间1}}。我不知道为什么我不能让它工作,并且已经挣扎了一段时间。
任何帮助将不胜感激。这是我的课程。这是我第一次发帖,所以如果我做错了,请告诉我。
printDuration
答案 0 :(得分:1)
问题如下:
public String printHobbies() {
for (int j = 0; j < myHobbies.length; j++)
hobbyText = myHobbies[j].toString();
return hobbyText;
}
首先,在每个循环中覆盖字符串。写
hobbyText += myHobbies[j].toString();
其次,如果你不添加5个爱好,你将获得一个NPE,因为数组中的每个项目在开头都是null。
所以你必须检查myHobbies [j]是否为空:
public String printHobbies() {
for (int j = 0; j < myHobbies.length; j++) {
if(myHobbies[j] != null) {
hobbyText += myHobbies[j].toString();
}
}
return hobbyText;
}
您还可以查看收藏集:http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Collections.html
答案 1 :(得分:1)
可能会导致代码出现问题的bug很少,这取决于当前的使用情况。
您不会重置总持续时间,这意味着它只在第一次调用后返回正确的结果。否则,它将乘以调用次数。
public double printDuration() {
for (int k = 0; k < myHobbies.length; k++)
totalDuration += myHobbies[k].getDuration();
return totalDuration;
}
您使用固定大小为5的简单数组。这意味着,如果您添加超过5个爱好,它将抛出IndexOutOfBoundsException
。
你在数组中的所有爱好上调用toString()
方法,但它们已被设置。默认情况下,数组初始化为null
,这意味着,如果您设置的业余爱好少于5个,则会尝试在引发null
的{{1}}上调用它。
NullPointerException