「Java/基礎/反復処理」の版間の差分
削除された内容 追加された内容
Semi-Brace (トーク | 投稿記録) |
Semi-Brace (トーク | 投稿記録) M +syntax,tt->{{tt}} |
||
10 行
Hello world同様、実用的な意味は全くありませんが、反復処理を使っています。
<syntaxhighlight lang="java" highlight="4,6">
class JapaneseHelloWorld {
public static void main(String[] args) {
char[] msg = "世界よこんにちは".toCharArray();
for (int i = 0; i <
}
}
}
</syntaxhighlight>
{{Wikipedia|for文|for文}}
上の例は'''for文'''と呼ばれる構文を使った例です(4行目にキーワード「
コンパイルして実行してみましょう。
35 ⟶ 36行目:
一応“縦書き”でメッセージが表示されます(コマンドの行頭に出てくる「
66 ⟶ 67行目:
このプログラムは次のように書くこともできます。
<syntaxhighlight lang="java" highlight="5,8">
class JapaneseHelloWorld {
public static void main(String[] args) {
char[]
int
while (i <
}
}
}
</syntaxhighlight>
{{Wikipedia|while文|while文}}
こちらは'''while文'''を使った書き方です。
さらに次のような書き方もできます。
<syntaxhighlight lang="java" highlight="5,7">
</syntaxhighlight>
これは'''do-while文'''と呼ばれます。
96 ⟶ 99行目:
またさらには、Java SE 5.0 以降を使っている場合、'''拡張for文'''と呼ばれるものをつかって次のような書き方も可能です。
これが最もシンプルな書き方です。
<syntaxhighlight lang="java">
class JapaneseHelloWorld {
public static void main(String[] args) {
for (char c:
}
}
}
</syntaxhighlight>
反復処理を紹介する導入として、カタログ的にいくつかの書き方を紹介しました(もっとも、この例のように配列要素を取り出したい場合は、通常for文が適していると言えるでしょうけれども)。
122 ⟶ 126行目:
!説明
|-
!
| 数学の > と同様。左辺の値が右辺の値よりも大きい場合に真
|-
!
| 数学の ≧ と同様。左辺の値が右辺の値よりも大きいか、もしくは等しい場合に真
|-
!
| 数学の < と同様。
|-
!
| 数学の ≦ と同様。左辺の値が右辺の値よりも小さいか、もしくは等しい場合に真
|-
!
| 左辺の値と右辺の値が等しい場合に真
|-
!
|
|-
|}
163 ⟶ 167行目:
#*# 反復処理を終了する
なお、<i>繰り返す処理</i>は、単文であればブロック(
たとえば次のように書きます。
<syntaxhighlight lang="java">
for (int i = 0; i < msg.length; i++) System.out.println(msg[i]);
</syntaxhighlight>
=== for文を読み解く ===
しばしばfor文では、'''ループカウンタ'''と呼ばれる変数が使われます。このページの冒頭で掲げた例では変数
この例では「継続処理」が「
for文が適用されるシーンはさまざまありますが、その最も典型的な適用パターンの1つは、このように1回繰り返すごとにループカウンタの値を変化させ、それにより繰り返される処理のパラメータを変化させるというものです。
178 ⟶ 183行目:
たとえば、次のコード片は、7の段の九九を表示する処理です。
<syntaxhighlight lang="java">
for (int n = 1; n <= 9; n++) {
System.out.println("7 x " + n + " = " + 7 * n); // </syntaxhighlight>
この反復される処理は、繰り返すたびにどのように変化するでしょうか。一緒に想像力を働かせながら、頭の中でプログラムの動作をトレースしてみることにしましょう。
まず、
<syntaxhighlight lang="java">
System.out.println("7 x 1 = " + 7 * 1);
</syntaxhighlight>
と同等になります。
2回目はどうでしょう? 2回目では
ですから、<b>A</b>の文は
<syntaxhighlight lang="java">
System.out.println("7 x 2 = " + 7 * 2);
</syntaxhighlight>
と同等ということになります。簡単ですね?
以下、反復条件を満たさなくなるまで同様のことが繰り返されるわけですが、ではどのように終了するか、終了の際の動作を思い描くことができますか。
一緒に
#
#
#
#
#
#
# 繰り返しが終了する
213 ⟶ 223行目:
for文の学習と言えば、典型的な例が掛け算九九を表示するサンプルです。
<syntaxhighlight lang="java">
class Main {
public static void
for (int x = 1; x <= 9; x++) {
String buf = String.format("%dx%d=%2d ", x, y, x * y); </syntaxhighlight>
もしかすると初めのうちは、for文が入れ子になると分かりづらいかもしれません。
処理の流れを追うことができますか?
236 ⟶ 247行目:
冒頭で掲げた例のうち
<syntaxhighlight lang="java">
class JapaneseHelloWorld {
public static void main(String[] args) {
for (char c :
}
}
}
</syntaxhighlight>
が拡張for文を使った例です。
275 ⟶ 287行目:
while文の書式は次のとおりです。
<syntaxhighlight lang="java">
while (/* 反復条件 */) {
/* 繰り返す処理 */
}
</syntaxhighlight>
処理の進み方は次のとおりです。
296 ⟶ 309行目:
たとえば、次の例は、引数で指定されたテキストファイルを読み込んで表示するサンプルです。
<syntaxhighlight lang="java" highlight="8,10">
import java.io.*;
class CatLike {
public static void main(String[] args) throws IOException {
for (String fn : args) {
BufferedReader in = new BufferedReader(new FileReader(fn));
String line = null;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
}
}
}
</syntaxhighlight>
このようにファイルやデータベースからデータを読み込むような処理は、while文が使われることの多い例と言えるかもしれません。
|