回答編集履歴

2

並び替えの手順をバッサリカット

2015/07/12 03:48

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -43,3 +43,69 @@
43
43
  ```
44
44
 
45
45
  こういう形なら可能ですが.
46
+
47
+
48
+
49
+ Gravity値をランダムに出したいだけならわざわざ並び替えをする必要もなく,
50
+
51
+ ```lang-java
52
+
53
+ package com.example.takamasaawai.myapplication;
54
+
55
+
56
+
57
+ import android.view.Gravity;
58
+
59
+
60
+
61
+ import java.util.Random;
62
+
63
+
64
+
65
+ public class TextViewGravity {
66
+
67
+ int[] g = {Gravity.CENTER, Gravity.LEFT, Gravity.RIGHT, Gravity.TOP,
68
+
69
+ Gravity.BOTTOM, Gravity.FILL, Gravity.FILL_VERTICAL, Gravity.FILL_HORIZONTAL,
70
+
71
+ Gravity.CENTER_VERTICAL, Gravity.CENTER_VERTICAL,
72
+
73
+ Gravity.TOP | Gravity.CENTER, Gravity.TOP | Gravity.CENTER_HORIZONTAL, Gravity.TOP | Gravity.RIGHT,
74
+
75
+ Gravity.TOP | Gravity.LEFT, Gravity.BOTTOM | Gravity.LEFT, Gravity.BOTTOM | Gravity.RIGHT};
76
+
77
+ Random r = new Random();
78
+
79
+
80
+
81
+ int getRndGravity() {
82
+
83
+ return g[r.nextInt(g.length)];
84
+
85
+ }
86
+
87
+ }
88
+
89
+ ```
90
+
91
+ これで事足ります.
92
+
93
+ また,個人的にはわざわざインスタンス化する必要もない気がします.
94
+
95
+ `int g[]`→`private static int g[]` にして,
96
+
97
+ `Random r`の行を消して,
98
+
99
+ ```lang-java
100
+
101
+ public static int getRndGravity() {
102
+
103
+ return g[(int)(Math.random() * g.length)];
104
+
105
+ }
106
+
107
+ ```
108
+
109
+ これで呼び出すとき`TextViewGravity.getRndGravity()`とすれば,
110
+
111
+ gから毎回ランダムに値が取り出されます.

1

他の訂正点

2015/07/12 03:48

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -1 +1,45 @@
1
1
  今gは**int型の配列**で,それに対して**int型**のr.nextInt(g.length)を代入しようとしているためです.
2
+
3
+
4
+
5
+ 他には
6
+
7
+ ```lang-java
8
+
9
+ int[] newlist = new int[g.length];
10
+
11
+ for (int i = 0; i < g.length; i++) {
12
+
13
+ while (true) {
14
+
15
+ int a = r.nextInt(g.length);
16
+
17
+ newlist[i] = g[a];
18
+
19
+ break;
20
+
21
+ }
22
+
23
+ }
24
+
25
+ ```
26
+
27
+ これが配列の並び替えなら,これではダメです.同じ要素が重複して並ぶ可能性があります.
28
+
29
+
30
+
31
+ ```lang-java
32
+
33
+ textView.setGravity(tvg.getG());
34
+
35
+ ```
36
+
37
+ getG()はint型配列を返すので,int型を引数に取るsetGravityには渡せません.
38
+
39
+ ```lang-java
40
+
41
+ textView.setGravity(tvg.getG()[0]);
42
+
43
+ ```
44
+
45
+ こういう形なら可能ですが.