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

質問編集履歴

4

解決

2022/03/03 10:30

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- 昇順ソートをしたい。
1
+ ぶじかいけつまし
body CHANGED
@@ -1,51 +1,7 @@
1
- ### 前提・実現したいこと
1
+ ### 前提・実現したいこと
2
- 配列内文字列をソートしたい。
2
+
3
- importは使わず。(eg. arraylist)
3
+ ### 発生している問題・エラーメッセージ
4
-
4
+
5
- ### 該当コード
5
+ ### 該当のソースコード
6
- ```
6
+
7
- class Sort {
8
- protected String[] ary = { "abc", "bac", "cab","123","231" };
9
-
10
- public int getIdx() {
11
- return ary.length;
12
- }
13
- public String[] getAry() {
14
- return ary;
15
- }
16
- public void asc() {
17
- for (int i = 0; i < ary.length; i++) {
18
- for (int j = 1; j < ary.length; j++) {
19
- if ((int) ary[j].charAt(j-j) > (int) ary[i].charAt(i)) {
20
- String tmp = ary[i];
21
- ary[i] = ary[j];
22
- ary[j] = tmp;
23
- }
24
- }
25
- }
26
- }
27
- }
28
- ```
29
-
30
- ```
31
- class Sample {
32
- public static void main(String[] args) {
33
- Sort s = new Sort();
34
- s.asc();
35
- s.getAry();
36
- for (int i = 0; i < s.getIdx(); i++) {
37
- System.out.println(s.getAry()[i]);
38
- }
39
- }
40
- }
41
-
42
- ```
43
-
44
- ### 試したこと
7
+ ### 補足
45
- 文字列同士を比べる際にまずはstring→charに変換し、文字列コードで比較すると思うのですが、
46
- この手順だけで比較するとString型配列とchar型配列の違いでエラーが出てしまいます。
47
- ```
48
- Exception in thread "main" java.lang.StringIndexOutOfBoundsException:
49
- String index out of range: 1
50
- ```
51
- 上記手順で抜けている点のアドバイスをお願いいたします。

3

コードの編集

2021/12/26 08:25

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -5,7 +5,7 @@
5
5
  ### 該当コード
6
6
  ```
7
7
  class Sort {
8
- protected String[] ary = { "b", "a", "c" };
8
+ protected String[] ary = { "abc", "bac", "cab","123","231" };
9
9
 
10
10
  public int getIdx() {
11
11
  return ary.length;

2

コードの編集

2021/12/26 08:25

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -15,12 +15,11 @@
15
15
  }
16
16
  public void asc() {
17
17
  for (int i = 0; i < ary.length; i++) {
18
- for (int j = 0; j < ary.length; j++) {
18
+ for (int j = 1; j < ary.length; j++) {
19
- if ((int) ary[j].charAt(j) > (int) ary[i].charAt(i)) {
19
+ if ((int) ary[j].charAt(j-j) > (int) ary[i].charAt(i)) {
20
20
  String tmp = ary[i];
21
21
  ary[i] = ary[j];
22
22
  ary[j] = tmp;
23
- return;
24
23
  }
25
24
  }
26
25
  }

1

コードの編集

2021/12/26 08:22

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -2,11 +2,51 @@
2
2
  配列内文字列をソートしたい。
3
3
  importは使わず。(eg. arraylist)
4
4
 
5
+ ### 該当コード
6
+ ```
7
+ class Sort {
8
+ protected String[] ary = { "b", "a", "c" };
9
+
10
+ public int getIdx() {
11
+ return ary.length;
12
+ }
13
+ public String[] getAry() {
14
+ return ary;
15
+ }
16
+ public void asc() {
17
+ for (int i = 0; i < ary.length; i++) {
18
+ for (int j = 0; j < ary.length; j++) {
19
+ if ((int) ary[j].charAt(j) > (int) ary[i].charAt(i)) {
20
+ String tmp = ary[i];
21
+ ary[i] = ary[j];
22
+ ary[j] = tmp;
23
+ return;
24
+ }
25
+ }
26
+ }
27
+ }
28
+ }
29
+ ```
30
+
31
+ ```
32
+ class Sample {
33
+ public static void main(String[] args) {
34
+ Sort s = new Sort();
35
+ s.asc();
36
+ s.getAry();
37
+ for (int i = 0; i < s.getIdx(); i++) {
38
+ System.out.println(s.getAry()[i]);
39
+ }
40
+ }
41
+ }
42
+
43
+ ```
44
+
5
45
  ### 試したこと
6
46
  文字列同士を比べる際にまずはstring→charに変換し、文字列コードで比較すると思うのですが、
7
47
  この手順だけで比較するとString型配列とchar型配列の違いでエラーが出てしまいます。
8
48
  ```
9
49
  Exception in thread "main" java.lang.StringIndexOutOfBoundsException:
10
- String index out of range: 3
50
+ String index out of range: 1
11
51
  ```
12
52
  上記手順で抜けている点のアドバイスをお願いいたします。