Mas qual a dificuldade?
Perceba que, pelas regras que você colocou, teremos:
Quanto maior a média, maior a posição.
Se uma ou mais médias forem iguais, a posição se repete.
Dois ifs resolvem o problema, não?
Mais ou menos como uma rotina para ordenar
Se os dados estiverem armazenados num banco sql, poderia fazer um group by pelas notas (para saber quantas posições diferentes existem) e depois faz outro select a partir da primeira lista, para ver quem tirou a nota de cada posição.
Você também pode usar uma estrutura que ordene em tempo de inserção:
private TreeMap< Double, List<String> > ranking;
public void add(String obj, double nota){
List<String> list = ranking.get(nota);
if(list == null)
ranking.put(nota, new ArrayList<String>());
ranking.get(nota).add(obj);
}
public Ranking() {
ranking = new TreeMap<Double, List<String>>();
//gera 5 objetos
Random r = new Random();
for (int i = 0; i < 5; i++) {
int n = r.nextInt(10);
add( "Objeto "+ n, n );
}
int i = 0;
for (Entry<Double, List<String>> entry : ranking.descendingMap().entrySet() )
System.out.println( ++i +"º " + entry.getValue() );
}
Alguém pode me ajudar com a lógica para fazer as poisições?[/quote]Esse é o resultado que você está conseguindo ou é o resultado esperado? Se não é o resultado esperado, qual seria o resultado correto?