我是 java 新手,想要创建一个如下所示的结果列表:
首先用户输入事件,然后显示结果列表(左侧的位置、结果和名称)。
Command> Javelin
Results for Javelin
1 86,00 William Mandela
2 83,50 Arthur Dent
3 63,00 Donald Dublett
4 58,00 Hawkeye Pierce
5 40,00 Ada Lovelace
如果有两个或多个相同的结果,则运动员共享排名。
Command> 100 meters
Results for 100 meters
1 11,30 Donald Dublett
2 12,40 Tricia Mcmillan
2 12,40 Alan Turing
4 13,00 William Mandela
5 15,00 Arthur Dent
5 15,00 Ada Lovelace
7 16,00 Hawkeye Pierce
这是我到目前为止所得到的,但它不起作用。
for (int m = 1; m < ResultList.gamesResults.size(); m++) {
System.out.println(counter++ + ". " + ResultList.gamesResults.get(m-1).getResult());
if (ResultList.gamesResults.get(m).getResult() == ResultList.gamesResults.get(m-1).getResult()) {
System.out.println(counter + ". " + ResultList.gamesResults.get(m).getResult());
}
}
名称部分现在并不重要。我想做的是一种冒泡排序,但我只是检查相同的结果。你们有什么感想?我是在浪费时间吗?感觉我走在正确的轨道上。我错过了什么?
我不想使用比较器接口(interface),所以你知道。
最佳答案
我不知道你为什么不想使用比较器。您需要编写一个名为 Results 的类:
private class Results
{
double Result;
String name;
int rank;
}
然后构建一个数组列表:
List<Results> list = new ArrayList<Results>();
然后使用比较器对它们进行排序,该比较器根据“结果”字段进行比较,例如
Collections.sort( list , CustomComparator<Results> );
然后现在关于职位: 您现在已经有了排序后的列表。迭代它们并执行以下操作:
Iterator<Results> it = list.iterator();
int position = 0;
double toCompare = 0;
boolean changePosition = false;
while ( it.hasNext() )
{
Results results = it.next();
if( results.result > toCompare )
{
changePosition = true;
}
else if( results.result == toCompare )
{
changePosition = false;
}
if( changePosition )
{
results.rank = position++;
}
else
{
results.rank = position;
}
toCompare = results.result;
}
我希望你能明白。
然后打印整个数组列表。
关于java - 创建结果列表并处理相同的结果。 ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34668320/