I am developing a similar application to the Olympic medals table. I have already done the classes and the table with the countries and their respective medals. Now I am hooked on the part that I need to organize the table by the greater amount of gold, if I tie the gold, check the largest number of silver and so also with the bronze.
Below are my classes:
Country Class:
public class Pais {
private String nome;
private String iso;
private ArrayList<Atleta> atletas;
private int ouro;
private int prata;
private int bronze;
public Pais(String n, String i) {
nome = n;
iso = i;
atletas = new ArrayList<>();
}
public void addAtleta(Atleta a) {
atletas.add(a);
}
public String getNome() {
return nome;
}
public String getIso() {
return iso;
}
public int getOuro() {
return ouro;
}
public int getPrata() {
return prata;
}
public int getBronze() {
return bronze;
}
public void atualizar() {
ouro = 0;
prata = 0;
bronze = 0;
for (Atleta a : atletas) {
switch (a.getMedalha()) {
case Medalha.OURO:
ouro++;
break;
case Medalha.PRATA:
prata++;
break;
case Medalha.BRONZE:
bronze++;
break;
}
}
}
Olympiad class:
public class Olimpiada {
private ArrayList<Modalidade> modalidades;
private ArrayList<Pais> paises;
private String sede;
private int ano;
public Olimpiada(String s, int a) {
sede = s;
ano = a;
modalidades = new ArrayList<>();
paises = new ArrayList<>();
}
public void addPais(Pais p) {
paises.add(p);
}
public void addModalidade(Modalidade m) {
modalidades.add(m);
}
public String getSede() {
return sede;
}
public int getAno() {
return ano;
}
public void listarPaises() {
for (Pais p : paises) {
System.out.println(p.getNome() + " " + p.getIso() + "\n");
}
}
public void gerarRanking() {
for (Pais p : paises) {
p.atualizar();
System.out.println(p.getIso() + "\t" + p.getOuro() + "\t" + p.getPrata() + "\t" + p.getBronze() + "\t" + (p.getOuro() + p.getPrata() + p.getBronze()));
}
}
}
Class Mode:
public class Modalidade {
private String nome;
private boolean coletiva;
public Modalidade(String n, boolean c) {
nome = n;
coletiva = c;
}
}
Medal Class:
public class Medalha {
public static final int OURO = 0;
public static final int PRATA = 1;
public static final int BRONZE = 2;
}
Athlete Class:
public class Atleta {
private String nome;
private int medalha;
private char sexo;
private Date data;
private Modalidade modalidade;
public Atleta(String n, int m, char s, Date d, Modalidade mo) {
nome = n;
medalha = m;
sexo = s;
data = d;
modalidade = mo;
}
public int getMedalha() {
return medalha;
}
}
Main Class:
public class Main {
public static void main(String[] args) {
Olimpiada rio2016 = new Olimpiada("Rio", 2016);
Modalidade atletismo = new Modalidade("Atletismo", false);
Modalidade judo = new Modalidade("Judo", false);
Modalidade box = new Modalidade("Box", false);
Modalidade tenis = new Modalidade("Tenis", false);
Modalidade futebol = new Modalidade("Futebol", true);
Modalidade volei = new Modalidade("Volei", true);
Modalidade handebol = new Modalidade("Handebol", true);
Modalidade basquete = new Modalidade("Basquete", true);
Modalidade natacao = new Modalidade("Natação", true);
Pais bra = new Pais("Brasil", "BRA");
bra.addAtleta(new Atleta("Rafaela Silva", Medalha.OURO, 'F', null, judo));
bra.addAtleta(new Atleta("Thiago Silva", Medalha.OURO, 'M', null, atletismo));
bra.addAtleta(new Atleta("Alana Bezerra", Medalha.BRONZE, 'F', null, tenis));
bra.addAtleta(new Atleta("Helena Maria", Medalha.PRATA, 'F', null, handebol));
bra.addAtleta(new Atleta("Anderson Cardoso", Medalha.PRATA, 'M', null, basquete));
bra.addAtleta(new Atleta("Rafael M", Medalha.PRATA, 'M', null, natacao));
bra.addAtleta(new Atleta("Alex V", Medalha.BRONZE, 'M', null, atletismo));
bra.addAtleta(new Atleta("Neymar Jr.", Medalha.OURO, 'M', null, futebol));
Pais usa = new Pais("Estados Unidos", "USA");
usa.addAtleta(new Atleta("Fernanda P", Medalha.OURO, 'F', null, judo));
usa.addAtleta(new Atleta("Monica T", Medalha.OURO, 'F', null, basquete));
usa.addAtleta(new Atleta("Ammy A", Medalha.PRATA, 'F', null, basquete));
usa.addAtleta(new Atleta("Tommy S", Medalha.PRATA, 'M', null, futebol));
usa.addAtleta(new Atleta("Mary J", Medalha.PRATA, 'F', null, natacao));
usa.addAtleta(new Atleta("Mikael L", Medalha.BRONZE, 'M', null, natacao));
usa.addAtleta(new Atleta("Jessy E", Medalha.OURO, 'F', null, handebol));
usa.addAtleta(new Atleta("Jammy C", Medalha.OURO, 'M', null, tenis));
Pais esp = new Pais("Espanha", "ESP");
esp.addAtleta(new Atleta("Jesenia D", Medalha.BRONZE, 'F', null, basquete));
esp.addAtleta(new Atleta("Isona E", Medalha.BRONZE, 'F', null, natacao));
esp.addAtleta(new Atleta("Ginesa F", Medalha.BRONZE, 'F', null, handebol));
esp.addAtleta(new Atleta("Prado E", Medalha.PRATA, 'M', null, handebol));
esp.addAtleta(new Atleta("Pelayo J", Medalha.PRATA, 'M', null, tenis));
esp.addAtleta(new Atleta("Ixeya U", Medalha.PRATA, 'F', null, futebol));
esp.addAtleta(new Atleta("Maica T", Medalha.OURO, 'F', null, atletismo));
esp.addAtleta(new Atleta("Orlando O", Medalha.OURO, 'M', null, futebol));
rio2016.addPais(bra);
rio2016.addPais(usa);
rio2016.addPais(esp);
rio2016.addModalidade(judo);
rio2016.addModalidade(atletismo);
rio2016.addModalidade(box);
rio2016.addModalidade(futebol);
rio2016.addModalidade(tenis);
rio2016.addModalidade(handebol);
rio2016.addModalidade(natacao);
rio2016.addModalidade(natacao);
//rio2016.listarPaises();
rio2016.gerarRanking();
}
}