回答編集履歴

3

修正コードの追加

2020/06/03 03:32

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -37,3 +37,63 @@
37
37
  すみません。これでもソートができません。
38
38
 
39
39
  もう少し調べてみます。
40
+
41
+
42
+
43
+ **追記2**
44
+
45
+ countries[i] が countries[j] で置き換わるのに、
46
+
47
+ countries[i] の値を使っていました。
48
+
49
+ 保存した c を使って、countries[j] との比較をしましょう。
50
+
51
+ ```Java
52
+
53
+ public void sortResults() {
54
+
55
+
56
+
57
+ for (int i = 1; i < countries.length && countries[i] != null; i++) {
58
+
59
+ int j = i - 1;
60
+
61
+ Country c = countries[i];
62
+
63
+ while (j >= 0 && compare_Medal(c, countries[j])) { // ★
64
+
65
+ countries[j+1] = countries[j];
66
+
67
+ j--;
68
+
69
+ }
70
+
71
+ j++;
72
+
73
+ countries[j] = c;
74
+
75
+ }
76
+
77
+ }
78
+
79
+
80
+
81
+ private boolean compare_Medal(Country c, Country d) { // ★
82
+
83
+ if (c.gold > d.gold) return true;
84
+
85
+ if (c.gold < d.gold) return false;
86
+
87
+ if (c.silver > d.silver) return true;
88
+
89
+ if (c.silver < d.silver) return false;
90
+
91
+ if (c.bronze > d.bronze) return true;
92
+
93
+ if (c.bronze < d.bronze) return false;
94
+
95
+ return c.name.compareTo(d.name) < 0;
96
+
97
+ }
98
+
99
+ ```

2

回答は間違いだった

2020/06/03 03:32

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -31,3 +31,9 @@
31
31
  }
32
32
 
33
33
  ```
34
+
35
+ **追記**
36
+
37
+ すみません。これでもソートができません。
38
+
39
+ もう少し調べてみます。

1

compareTo を追加

2020/06/03 01:55

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -22,6 +22,8 @@
22
22
 
23
23
  if (c.bronze < countries[j].bronze) return false;
24
24
 
25
+ if (c.name.compareTo(countries[j].name) < 0) return true;
26
+
25
27
  }
26
28
 
27
29
  return false;