回答編集履歴

5

間違ってる気がしたので削除

2015/08/23 14:24

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -20,62 +20,4 @@
20
20
 
21
21
  - 配列0番目以外はfor(i = 1)により再度入れ替えの対象となり,望む順番にならない.
22
22
 
23
- - 入れ替えの部分が冗長すぎる.条件の数値が違うだけでやってることは全部同じなのでまとめられる.
24
23
 
25
- ```java
26
-
27
- for (int j = 0; j < 6; j++) {
28
-
29
- List<Integer> target = null;
30
-
31
- switch(code[j]){
32
-
33
- default:
34
-
35
- continue;
36
-
37
- case 0:
38
-
39
- target = Arrays.asList(new Integer[]{2});
40
-
41
- break;
42
-
43
- case 3:
44
-
45
- target = Arrays.asList(new Integer[]{5});
46
-
47
- break;
48
-
49
- case 4:
50
-
51
- target = Arrays.asList(new Integer[]{6});
52
-
53
- break;
54
-
55
- case 6:
56
-
57
- target = Arrays.asList(new Integer[]{3, 5});
58
-
59
- break;
60
-
61
- }
62
-
63
- for (int i = j + 1; i < 6; i++) {
64
-
65
- if(target.contains(code[i])){
66
-
67
- taihi = code[j];
68
-
69
- code[j] = code[i]; //前後入れ替え
70
-
71
- code[i] = taihi;
72
-
73
- }
74
-
75
- }
76
-
77
- }
78
-
79
-
80
-
81
- ```

4

並べ替え

2015/08/23 14:24

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -20,4 +20,62 @@
20
20
 
21
21
  - 配列0番目以外はfor(i = 1)により再度入れ替えの対象となり,望む順番にならない.
22
22
 
23
+ - 入れ替えの部分が冗長すぎる.条件の数値が違うだけでやってることは全部同じなのでまとめられる.
23
24
 
25
+ ```java
26
+
27
+ for (int j = 0; j < 6; j++) {
28
+
29
+ List<Integer> target = null;
30
+
31
+ switch(code[j]){
32
+
33
+ default:
34
+
35
+ continue;
36
+
37
+ case 0:
38
+
39
+ target = Arrays.asList(new Integer[]{2});
40
+
41
+ break;
42
+
43
+ case 3:
44
+
45
+ target = Arrays.asList(new Integer[]{5});
46
+
47
+ break;
48
+
49
+ case 4:
50
+
51
+ target = Arrays.asList(new Integer[]{6});
52
+
53
+ break;
54
+
55
+ case 6:
56
+
57
+ target = Arrays.asList(new Integer[]{3, 5});
58
+
59
+ break;
60
+
61
+ }
62
+
63
+ for (int i = j + 1; i < 6; i++) {
64
+
65
+ if(target.contains(code[i])){
66
+
67
+ taihi = code[j];
68
+
69
+ code[j] = code[i]; //前後入れ替え
70
+
71
+ code[i] = taihi;
72
+
73
+ }
74
+
75
+ }
76
+
77
+ }
78
+
79
+
80
+
81
+ ```

3

質問の回答となる原因をようやく発見

2015/08/23 14:16

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -1,3 +1,13 @@
1
+ MainActivityのonCreateの途中でstartActivityForResultを起動してSubActivityを起動しているわけですが,
2
+
3
+ この時点で処理が中断するわけではなく,後に続く処理は普通に続行します.
4
+
5
+ すなわち,「値が変わらない」のではなく,「値が変わる前に処理を行っている」というのが現在の状態となります.
6
+
7
+ ---
8
+
9
+
10
+
1
11
  質問とは関係ないですが,気になった点をいくつか
2
12
 
3
13
  - わざわざこの乱数生成を別Activityに起こす必要はないのでは?同じActivity内で別メソッドとして入れれば十分

2

追加2

2015/08/22 03:10

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -7,3 +7,7 @@
7
7
  - StringはCharSequenseインタフェースを実装しているので,わざわざ変換しなくともそのままsetTextの引数として渡せる
8
8
 
9
9
  - 入れ替え作業の際,入れ替え対象に0が選ばれるとtaihiに0が入るため,「入れ替えが起きたのにループを抜ける」という事態になる
10
+
11
+ - 配列0番目以外はfor(i = 1)により再度入れ替えの対象となり,望む順番にならない.
12
+
13
+

1

気になった点追加

2015/08/22 02:11

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -5,3 +5,5 @@
5
5
  - SubActivityにおいて,TextViewがnullのままになっているように見える.そのままsetTextしたら例外が発生するはずでは?
6
6
 
7
7
  - StringはCharSequenseインタフェースを実装しているので,わざわざ変換しなくともそのままsetTextの引数として渡せる
8
+
9
+ - 入れ替え作業の際,入れ替え対象に0が選ばれるとtaihiに0が入るため,「入れ替えが起きたのにループを抜ける」という事態になる