我是编码的新手。我的任务是获取播放列表中所有曲目的总持续时间(以秒为单位)。在另一个类中有一个名为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;。
答案 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;