teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

誤字修正

2021/12/27 13:52

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -52,6 +52,6 @@
52
52
  }
53
53
  }
54
54
  ```
55
- if文の式に参考演算子を使う変態プログラムです。
55
+ if文の式に三項演算子(?:)を使う変態プログラムです。
56
56
  もっと分かりやすいのを書いてくださいね。
57
57
  ところで、asc ってどういう意味ですか?

1

追記

2021/12/27 13:52

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -18,4 +18,40 @@
18
18
  }
19
19
  ```
20
20
  a[i] が int ではなく、String の場合、`a[i] > a[j]` とは書けないので、
21
- `a[i].compareTo(a[j]) > 0` にします。
21
+ `a[i].compareTo(a[j]) > 0` にします。
22
+
23
+ **追記**
24
+ compareTo を使うと簡単なんですが、面倒な charAt でやってみました。
25
+ ```java
26
+ class Sort {
27
+ protected String[] ary = { "abc", "bac", "cab", "123", "231" };
28
+
29
+ public int getIdx() { return ary.length; }
30
+
31
+ public String[] getAry() { return ary; }
32
+
33
+ public void asc() {
34
+ for (int i = 0; i < ary.length; i++)
35
+ for (int j = i+1; j < ary.length; j++) {
36
+ int k, n = ary[i].length(), m = ary[j].length();
37
+ if (n < m) m = n;
38
+ for (k = 0; k < m && ary[i].charAt(k) == ary[j].charAt(k); k++) ;
39
+ if (k < m ? ary[i].charAt(k) > ary[j].charAt(k) : n > m) {
40
+ String t = ary[i]; ary[i] = ary[j]; ary[j] = t;
41
+ }
42
+ }
43
+ }
44
+ }
45
+
46
+ class Sample {
47
+ public static void main(String[] args) {
48
+ Sort s = new Sort();
49
+ s.asc();
50
+ for (int i = 0; i < s.getIdx(); i++)
51
+ System.out.println(s.getAry()[i]);
52
+ }
53
+ }
54
+ ```
55
+ if文の式に参考演算子を使う変態プログラムです。
56
+ もっと分かりやすいのを書いてくださいね。
57
+ ところで、asc ってどういう意味ですか?