fork download
  1. import java.util.ArrayList;
  2. import java.util.List;
  3.  
  4. class Klasemen {
  5. private List<Klub> daftarKlub;
  6.  
  7. private static class Klub {
  8. String namaKlub;
  9. int poin;
  10.  
  11. public Klub(String namaKlub) {
  12. this.namaKlub = namaKlub;
  13. this.poin = 0;
  14. }
  15. }
  16.  
  17. public Klasemen(String[] klubList) {
  18. daftarKlub = new ArrayList<>();
  19. for (String klub : klubList) {
  20. daftarKlub.add(new Klub(klub));
  21. }
  22. }
  23.  
  24. private Klub findKlub(String nama) {
  25. for (Klub klub : daftarKlub) {
  26. if (klub.namaKlub.equals(nama)) {
  27. return klub;
  28. }
  29. }
  30. throw new Error();
  31. }
  32.  
  33. public void catatPermainan(String klubKandang, String klubTandang, String skor) {
  34. Klub klub1 = findKlub(klubKandang);
  35. Klub klub2 = findKlub(klubTandang);
  36.  
  37. String[] splitSkor = skor.split(":");
  38. int skor1 = Integer.parseInt(splitSkor[0]);
  39. int skor2 = Integer.parseInt(splitSkor[1]);
  40. if (skor1 > skor2) {
  41. klub1.poin += 3;
  42. } else if (skor1 < skor2) {
  43. klub2.poin += 3;
  44. } else {
  45. klub1.poin += 1;
  46. klub2.poin += 1;
  47. }
  48.  
  49. }
  50.  
  51. public List<Klub> cetakKlasemen() {
  52. List<Klub> sortedKlub = new ArrayList<>(daftarKlub);
  53. sortedKlub.sort((k1, k2) -> {
  54. if (k2.poin != k1.poin) {
  55. return k2.poin - k1.poin;
  56. }
  57. return k1.namaKlub.compareTo(k2.namaKlub);
  58. });
  59. return sortedKlub;
  60. }
  61.  
  62. public String ambilPeringkat(int nomorPeringkat) {
  63. List<Klub> sortedKlub = cetakKlasemen();
  64. if (nomorPeringkat <= 0 || nomorPeringkat > sortedKlub.size()) {
  65. throw new Error();
  66. }
  67. return sortedKlub.get(nomorPeringkat - 1).namaKlub;
  68. }
  69.  
  70. public static void main(String[] args) {
  71. Klasemen klasemen = new Klasemen(new String[] { "Liverpool", "Chelsea", "Arsenal" });
  72.  
  73. // Mencatat hasil permainan
  74. klasemen.catatPermainan("Arsenal", "Liverpool", "2:1");
  75. klasemen.catatPermainan("Arsenal", "Chelsea", "1:1");
  76. klasemen.catatPermainan("Chelsea", "Arsenal", "0:3");
  77. klasemen.catatPermainan("Chelsea", "Liverpool", "3:2");
  78. klasemen.catatPermainan("Liverpool", "Arsenal", "2:2");
  79. klasemen.catatPermainan("Liverpool", "Chelsea", "0:0");
  80.  
  81. // Cetak klasemen
  82. List<Klub> listKlasemen = klasemen.cetakKlasemen();
  83. System.out.print("[");
  84. for (Klub klub : listKlasemen) {
  85. System.out.print(klub.namaKlub + "=>" + klub.poin + ",");
  86. }
  87. System.out.print("]\n");
  88.  
  89. System.out.println("Peringkat 2: " + klasemen.ambilPeringkat(2));
  90. }
  91. }
Success #stdin #stdout 0.21s 55824KB
stdin
Standard input is empty
stdout
[Arsenal=>8,Chelsea=>5,Liverpool=>2,]
Peringkat 2: Chelsea