我有两个类MarathonAdmin
和Runner
。按时间排序的ArrayList对象属性
我想排序列表(runners
)持有Runner
类的对象。我完成了所有 的编码,直到方法sortRunnerList
,它说排序列表。我在Runner
类中创建了 a compareTo
方法,并且当我比较Runner
的对象时,它们会选择默认时间值,而不是我分配给产生随机数的对象的默认时间值(在MarathonAdmin
类中完成)。
有人可以帮助解决这个问题吗?
class Marathon
import java.util.*;
import java.io.*;
import ou.*;
import java.util.Random;
public class MarathonAdmin
{
// instance variables - replace the example below with your own
private List<Runner> runners;
private String ageGroup;
private String age;
private Random randomNumber;
private String result;
String ageRunner;
String ageGrouprunners;
Scanner lineScanner;
int ans ;
Runner runnerobj = new Runner();
Runner obj2 = new Runner();
public MarathonAdmin()
{
runners = new ArrayList<>();
}
public void readInRunners(){
String pathName = OUFileChooser.getFilename();
File aFile = new File(pathName);
String nameRunner;
BufferedReader bufferedFileReader = null;
try
{
bufferedFileReader = new BufferedReader(new FileReader(aFile));
String currentLine = bufferedFileReader.readLine();
while (currentLine != null){
lineScanner = new Scanner(currentLine);
lineScanner.useDelimiter(",");
nameRunner = lineScanner.next();
ageRunner = lineScanner.next();
if (Integer.parseInt(ageRunner) < 18)
{
result = "junior";
System.out.println(currentLine +" category" + " : Junior");
}
if (Integer.parseInt(ageRunner) > 55)
{
result = "senior";
System.out.println(currentLine +" category"+ " : Senior");
}
if (Integer.parseInt(ageRunner) > 18 && Integer.parseInt(ageRunner) < 55)
{
result = "standard";
System.out.println(currentLine +" category"+ " : Standard");
}
ageGrouprunners = result;
Runner runnerobj = new Runner();
runnerobj.setName(nameRunner);
runnerobj.setAgeGroup(ageGrouprunners);
System.out.println(runnerobj); //rough test
runners.add(runnerobj);
currentLine = bufferedFileReader.readLine();
}
}
catch (Exception anException)
{
System.out.println("Error: " + anException);
}
finally
{
try
{
bufferedFileReader.close();
}
catch (Exception anException)
{
System.out.println("Error: " + anException);
}
}
}
public void runMarathon(){
int size = runners.size();
// for (int runnersIndex = 0; runnersIndex <= size; runnersIndex ++){
for(Runner nameRunner : runners){
this.randomNumber = new Random();
ans = randomNumber.nextInt(190 - 80 +1) + 90 ;
System.out.println(ans);
nameRunner.setTime(ans);
}
}
public void sortRunnerList(){
for(Runner nameRunner : runners){
int time = nameRunner.getTime();
System.out.println(time);
Runner obj = new Runner();
obj.setTime(ans);
int res = nameRunner.compareTo(obj);
System.out.println(res);
}
}
}
//(This is method of class Runner)
Class Runner
Method compareTo()
@Override
public int compareTo(Runner anotherRunner)
{
return this.getTime()-(anotherRunner.getTime());
}
替换
请张贴[最小,** **完成,和可验证的示例](http://stackoverflow.com/help/ mcve) - 发布长时间不可编译的代码使得找到问题变得更加困难/不可能。 – Dukeling