Java Noob创建一个自定义方法来打印数组并计算持续时间

时间:2012-09-26 13:47:18

标签: java arrays methods

我之前使用过这个网站来帮助我完成我的许多编程任务,但是我找不到类似于我现在遇到的问题。

我尝试首先使用方法myHobbies在person类的toString中打印printHobby数组,并计算用户在{{{0}中执行Hobby的总持续时间1}}。我不知道为什么我不能让它工作,并且已经挣扎了一段时间。

任何帮助将不胜感激。这是我的课程。这是我第一次发帖,所以如果我做错了,请告诉我。

printDuration

2 个答案:

答案 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很少,这取决于当前的使用情况。

  1. 您不会重置总持续时间,这意味着它只在第一次调用后返回正确的结果。否则,它将乘以调用次数。

    public double printDuration() {
        for (int k = 0; k < myHobbies.length; k++)
            totalDuration += myHobbies[k].getDuration();
        return totalDuration;
    }
    
  2. 您使用固定大小为5的简单数组。这意味着,如果您添加超过5个爱好,它将抛出IndexOutOfBoundsException

  3. 你在数组中的所有爱好上调用toString()方法,但它们已被设置。默认情况下,数组初始化为null,这意味着,如果您设置的业余爱好少于5个,则会尝试在引发null的{​​{1}}上调用它。

    NullPointerException