回答編集履歴

1

追記

2018/01/16 03:49

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -160,6 +160,86 @@
160
160
 
161
161
 
162
162
 
163
+ コメントを受けて
164
+
165
+ ---
166
+
167
+ > 1)for文の初期化式を省略しているという箇所なのですが、省略されているものはint i=0でいいのでしょうか?
168
+
169
+
170
+
171
+ **0とは限りませんし、iとも限りません。**
172
+
173
+ ループカウンタを使う場合は、前もって初期化しておく必要があります。
174
+
175
+ ```Java
176
+
177
+ int i = 0;
178
+
179
+ for(; i < 4; ++i) {
180
+
181
+ }
182
+
183
+ ```
184
+
185
+
186
+
187
+ 次のような場合に省略されるように思います。
188
+
189
+ - ループカウンタをfor文外で利用したい場合
190
+
191
+ - ループカウンタを必要としない場合 (while文で書いた方が読みやすい気がする)
192
+
193
+
194
+
195
+ ループカウンタを前もって初期化しない場合、コンパイルエラーになります。
196
+
197
+
198
+
199
+ ---
200
+
201
+ > 2)ループが空白だと、iが4になるまで繰り返しが起こらないということですか?それとも、ループの所が空白でもiが4になるまでループは起こるのですか?
202
+
203
+
204
+
205
+ 良い質問ですね。**後者が正しいです。**
206
+
207
+ いわゆる空ループを書く目的は、次の二点かと思います。
208
+
209
+ - 待ち時間を作りたい場合 (簡潔ではありますが、良い方法だとは思いません。)
210
+
211
+ - カウンタを外部で宣言しており、**それの変化を利用したい場合**
212
+
213
+
214
+
215
+ 後者はしばしば書くことがありますが、無理に使うものでもありません。
216
+
217
+ もしそのようなコードを見かけましたら、それから動作を追っても遅くないと思います。
218
+
219
+
220
+
221
+ ---
222
+
223
+ 『次のループが実行されない!なんで!』というのは初心者あるある質問です。
224
+
225
+ ```Java
226
+
227
+ for(int i = 0; i < 10; ++i);
228
+
229
+ System.out.println(i);
230
+
231
+ ```
232
+
233
+
234
+
235
+ だからこそ、ひっかけ問題的に取り扱われているのでしょう。
236
+
237
+ ただ、**ひっかかってはいけませんが、他人をひっかけるコードを書いてもなりません。**
238
+
239
+ 出来るだけ素直にコードを書くことを意識出来ると良いですね。
240
+
241
+
242
+
163
243
  質問の仕方について
164
244
 
165
245
  ---