public void sortTracksList()
{
for(int j=0; j<tracksArray.length; j++)
{
for(int k =0; k<(tracksArray.length-1); k++)
{
if(tracksArray[k] > tracksArray[k+1])
{
int tempTracksArray = tracksArray[k];
tracksArray[k] = tracksArray[k+1];
tracksArray[k+1] = tempTracksArray;
}
}
}
for (int l = 0; l < tracksArray.length; l++)
{
System.out.println(tracksArray[l].toString());
}
}
这是我的代码,它有3个错误:
//if(tracksArray[k] > tracksArray[k+1]) - bad operand types for binary operator
//int tempTracksArray = tracksArray[k]; - Tracks cannot be converted to int
//tracksArray[k+1] = tempTracksArray; - int cannot be converted to Tracks
跟踪课程:
public class Tracks
{
int trackID;
String trackTitle;
String trackArtist;
double trackLength;
boolean trackOffline;
public String toString()
{
String trackData = trackID + "," +trackTitle + "," + trackArtist +
"," + trackLength + "," + trackOffline;
return trackData;
}
}
需要按ID排序
答案 0 :(得分:0)
您的代码有两个问题。
int tempTracksArray = tracksArray[k];
不正确。 tracksArray定义为Tracks[] tracksArray
;该数组包含Tracks
类型的对象。因此,正确的临时分配是Tracks tempTracksArray = tracksArray[k];
>
运算符。下面显示了两种方法来解决这个问题。选项1:比较整数
for(int j=0; j<tracksArray.length; j++)
{
for(int k =0; k<(tracksArray.length-1); k++)
{
if(tracksArray[k].trackID > tracksArray[k+1].trackID)
{
Tracks tempTracksArray = tracksArray[k];
tracksArray[k] = tracksArray[k+1];
tracksArray[k+1] = tempTracksArray;
}
}
}
选项2:使用Comparable接口
for(int j=0; j<tracksArray.length; j++)
{
for(int k =0; k<(tracksArray.length-1); k++)
{
if(tracksArray[k].compareTo(tracksArray[k+1]) > 0)
{
Tracks tempTracksArray = tracksArray[k];
tracksArray[k] = tracksArray[k+1];
tracksArray[k+1] = tempTracksArray;
}
}
}
在这种情况下,您的Tracks类必须实现Comparable:
class Tracks implements Comparable<Tracks> {
int trackID;
......
@Override
public int compareTo(Tracks o) {
return Integer.compare(this.trackID, o.trackID);
}
}
第二种选择是首选。您的Tracks类现在有一种自然的方法来描述它应该如何排序。