回答編集履歴

2

誤字修正

2021/12/27 13:52

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -106,7 +106,7 @@
106
106
 
107
107
  ```
108
108
 
109
- if文の式に参考演算子を使う変態プログラムです。
109
+ if文の式に三項演算子(?:)を使う変態プログラムです。
110
110
 
111
111
  もっと分かりやすいのを書いてくださいね。
112
112
 

1

追記

2021/12/27 13:52

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -39,3 +39,75 @@
39
39
  a[i] が int ではなく、String の場合、`a[i] > a[j]` とは書けないので、
40
40
 
41
41
  `a[i].compareTo(a[j]) > 0` にします。
42
+
43
+
44
+
45
+ **追記**
46
+
47
+ compareTo を使うと簡単なんですが、面倒な charAt でやってみました。
48
+
49
+ ```java
50
+
51
+ class Sort {
52
+
53
+ protected String[] ary = { "abc", "bac", "cab", "123", "231" };
54
+
55
+
56
+
57
+ public int getIdx() { return ary.length; }
58
+
59
+
60
+
61
+ public String[] getAry() { return ary; }
62
+
63
+
64
+
65
+ public void asc() {
66
+
67
+ for (int i = 0; i < ary.length; i++)
68
+
69
+ for (int j = i+1; j < ary.length; j++) {
70
+
71
+ int k, n = ary[i].length(), m = ary[j].length();
72
+
73
+ if (n < m) m = n;
74
+
75
+ for (k = 0; k < m && ary[i].charAt(k) == ary[j].charAt(k); k++) ;
76
+
77
+ if (k < m ? ary[i].charAt(k) > ary[j].charAt(k) : n > m) {
78
+
79
+ String t = ary[i]; ary[i] = ary[j]; ary[j] = t;
80
+
81
+ }
82
+
83
+ }
84
+
85
+ }
86
+
87
+ }
88
+
89
+
90
+
91
+ class Sample {
92
+
93
+ public static void main(String[] args) {
94
+
95
+ Sort s = new Sort();
96
+
97
+ s.asc();
98
+
99
+ for (int i = 0; i < s.getIdx(); i++)
100
+
101
+ System.out.println(s.getAry()[i]);
102
+
103
+ }
104
+
105
+ }
106
+
107
+ ```
108
+
109
+ if文の式に参考演算子を使う変態プログラムです。
110
+
111
+ もっと分かりやすいのを書いてくださいね。
112
+
113
+ ところで、asc ってどういう意味ですか?