回答編集履歴

7

追記

2018/07/17 13:38

投稿

umyu
umyu

スコア5846

test CHANGED
File without changes

6

追記

2018/07/17 13:37

投稿

umyu
umyu

スコア5846

test CHANGED
@@ -158,12 +158,22 @@
158
158
 
159
159
 
160
160
 
161
- `paint`メソッドで行っている2次元配列の`masu`値を設定している部分をループ毎**コピー**`start`メソッドにコピーすればいです。
161
+ 動作確認してませんがこんな感じに`start`メソッドを作ればです。
162
162
 
163
163
  ```Java
164
164
 
165
- int r =rnd.nextInt(2);
165
+ public void start() {
166
166
 
167
+ for(int i=0; i<masu.length;i++) {
168
+
169
+ for(int j=0; j<masu[i].length; j++) {
170
+
167
- masu[i][j] =r;
171
+ masu[i][j] = rnd.nextInt(2);
172
+
173
+ }
174
+
175
+ }
176
+
177
+ }
168
178
 
169
179
  ```

5

追記

2018/07/17 13:37

投稿

umyu
umyu

スコア5846

test CHANGED
@@ -143,3 +143,27 @@
143
143
 
144
144
 
145
145
  そして再描画[repaint](https://www.javadrive.jp/applet/thread/index5.html)を呼び出します。
146
+
147
+
148
+
149
+ ---
150
+
151
+ > repaintしてしまうと結局マスの色全部が変わってしまってテキストフィールドに入力した配列のマスの色のみを変えるということができないです…
152
+
153
+
154
+
155
+ どうして変わるのかをまず、考えてください。
156
+
157
+ 答えを云うとこのページ[Applet 基本メソッド](https://www.javadrive.jp/applet/basic/index6.html)を見てくださいな。Appletの各イベントが呼ばれるタイミングが記載されています。
158
+
159
+
160
+
161
+ 今、`paint`メソッドで行っている2次元配列の`masu`に値を設定している部分をループ毎**コピー**`start`メソッドにコピーすればいいです。
162
+
163
+ ```Java
164
+
165
+ int r =rnd.nextInt(2);
166
+
167
+ masu[i][j] =r;
168
+
169
+ ```

4

追記

2018/07/17 13:32

投稿

umyu
umyu

スコア5846

test CHANGED
@@ -123,3 +123,23 @@
123
123
  // 後略
124
124
 
125
125
  ```
126
+
127
+ ---
128
+
129
+
130
+
131
+ 反転とはなにかをまず考えて
132
+
133
+ 1 → 0
134
+
135
+ 0 → 1
136
+
137
+ これをコードに記述すればいいのです。
138
+
139
+
140
+
141
+ ヒントは剰余演算子とインクリメント演算子
142
+
143
+
144
+
145
+ そして再描画[repaint](https://www.javadrive.jp/applet/thread/index5.html)を呼び出します。

3

追記

2018/07/16 18:49

投稿

umyu
umyu

スコア5846

test CHANGED
@@ -104,8 +104,22 @@
104
104
 
105
105
  ```Java
106
106
 
107
- int r = new Random().nextInt(1);
107
+ int r = new Random().nextInt(1); // 指定した値が1のときにどーなるかーという話です。
108
108
 
109
109
  int l = new Random().nextInt(1);
110
110
 
111
111
  ```
112
+
113
+ あと`Random`のインスタンスは`paint`メソッド直下で宣言してくださいな。
114
+
115
+ ```Java
116
+
117
+ public void paint (Graphics g) {
118
+
119
+ final Random rnd = new Random(); // このように
120
+
121
+ for(int i=0; i<masu.length;i++) {
122
+
123
+ // 後略
124
+
125
+ ```

2

追記

2018/07/16 17:31

投稿

umyu
umyu

スコア5846

test CHANGED
@@ -85,3 +85,27 @@
85
85
  }
86
86
 
87
87
  ```
88
+
89
+
90
+
91
+ ---
92
+
93
+
94
+
95
+ > 問題はvoid paint 内の部分でランダムに配列の中に0か1を入れたつもりなのですが実行してみると緑一色にしかならなくて困ってます。
96
+
97
+
98
+
99
+ そういう時はまず公式ドキュメントを確認します。[Random#nextInt](https://docs.oracle.com/javase/jp/8/docs/api/java/util/Random.html#nextInt-int-)
100
+
101
+ この乱数ジェネレータのシーケンスを使って、0から指定された値の範囲(0は含むが、**その指定された値は含まない**)で一様分布のint型の擬似乱数値を返します。
102
+
103
+
104
+
105
+ ```Java
106
+
107
+ int r = new Random().nextInt(1);
108
+
109
+ int l = new Random().nextInt(1);
110
+
111
+ ```

1

追記

2018/07/16 17:27

投稿

umyu
umyu

スコア5846

test CHANGED
@@ -46,7 +46,7 @@
46
46
 
47
47
  以下は余談です。
48
48
 
49
- 配列の値を乱数値で埋めたい時は、[乱数を格納した配列を複数のクラスで共有したい。](https://teratail.com/questions/134955)で回答しましたが、[Random#ints](https://docs.oracle.com/javase/jp/8/docs/api/java/util/Random.html#ints-long-int-int-)が使えます。
49
+ 1次元配列の値を生成した乱数値で埋めたい時は、[乱数を格納した配列を複数のクラスで共有したい。](https://teratail.com/questions/134955)で回答しましたが、[Random#ints](https://docs.oracle.com/javase/jp/8/docs/api/java/util/Random.html#ints-long-int-int-)が使えます。
50
50
 
51
51
  ネットに出ているコードサンプルは`Java 1.8`リリース日(`2014年3月18日`)以前の古いコードが多いので、参考情報として書いておきます。
52
52