方法中ArrayList的总和

时间:2014-09-23 06:14:32

标签: java arraylist

我是编码的新手。我的任务是获取播放列表中所有曲目的总持续时间(以秒为单位)。在另一个类中有一个名为getDur的访问器方法。还有toString方法将所有内容转换为秒。这是我的代码。

private ArrayList<Track> tracksN;

public int getDurTotal()
{
    for (Track b: tracksN)
    {
        int sum = 0;
        for (int i=0; i<tracksN.size();i++)
        {
            sum += tracks.get(getDur(i));
        }
    }
    return sum;
}   

但是,我收到一条错误消息,指出PlayList类中的&#34;方法getDur无法应用于给定类型。必需:没有参数;发现:int;原因:实际和正式的参数列表长度不同&#34;。

4 个答案:

答案 0 :(得分:1)

您的代码在轨道列表上迭代两次。其中一个for循环需要去。之一:

int sum = 0;
for (int i = 0; i < tracksN.size(); i++) {
   Track track = tracksN.get(i);
   sum += track.getDur();
}

或者

int sum = 0;
for (Track track : tracksN) {
   sum += track.getDur();
}

在这两种方法之间,第二种方法更好,因为它可以正常工作(具有良好的性能),所有List&lt;&gt;类型,而不仅仅是ArrayList&lt;&gt;。它也更简单。

答案 1 :(得分:0)

您需要从列表中获取曲目,然后在其上调用getDur。试试这个:

private ArrayList<Track> tracksN;

public int getDurTotal()
{
    for (Track b: tracksN)
    {
        int sum = 0;
        for (int i=0; i<tracksN.size();i++)
        {
            sum += getDur(tracks.get(i));
        }
    }
    return sum;
} 

答案 2 :(得分:0)

答案就是错误本身;再读一遍。 PlayList无法应用于给定类型。必填:无参数

意思是您使用参数getDur(i)调用i

但是,如果您可以滚动浏览代码并找到方法getDur,则不需要任何参数。

我打赌它只是看起来像getDur(){或类似东西而且它的返回类型我认为是int

因此,如果您可以为您显示代码PlayList,也许有人可以帮助您正确实现代码。

答案 3 :(得分:0)

你只想使用一个for循环

int sum = 0;
for (Track track : tracksN)
{
  sum += track.getDur();
}
return sum;