Java はじめて 11 〜ループ処理A: for文2 拡張for文〜

イントロダクション

前回やったFor文よりも簡単な書き方ができるFor文です。これは配列や、リスト(Listインターフェース)などのコレクション(Collection)をループするときに便利な書き方です。
もちろん、配列でも便利です。
<実行してみた>

拡張for文の書き方

今回は、拡張for文の書き方をやります。書き方は以下のようになります。

for (取り出した変数 : 配列などの変数) {
    // 何かしらの処理
}

for文+if文


for文+switch文


前回のfor文

前回やったfor文は昔からあるもので、色んな事に使用できます。下のような書き方です。

for (初期化 ; ループ条件 ; ループする時の処理) {
   // 何かしらの処理
}


拡張for文

一言で言えば使いやすい、なのですが、それは配列やリストをループする時の話です。使い方次第では色んなことができると思います。実際に使用できるサンプルコードを下に示します。

配列でループ

配列は、データが一つの変数に複数の値が番号付きで並んでいるよう名イメージです。目で見えるものではないので、自分なりのイメージを持つと理解しやすいと思います。下の動画は、While文を使っていますが、配列に関して解説した動画になります。

public static void main(String[] args) {
   String[] arr = new String[]{"一郎", "二郎", "三郎"};
   for (String name : arr) {
      System.out.println("私の名前は、" + name + "です");
   }
}

こんな感じです。ちなみにリストでやる場合も同じような形です。

List

public static void main(String[] args) {
   List<String> list = new ArrayList<String>;
   list.add("一郎");
   list.add("二郎");
   list.add("三郎");
   for (String name : list) {
      System.out.println("私の名前は、" + name + "です");
   }
}

ラムダ式

public static void main(String[] args) {
   List<String> list = new ArrayList<String>;
    List<String> list = new ArrayList<>();
    list.add("一郎");
    list.add("二郎");
    list.add("三郎");
    // ここがラムダ式
    list.forEach(System.out::println);
} 

<For文を使ってみた>

<String型とchar型>※後半にfor文の実装を行なっています。

問題

for文を一回使用して、コンソール出力にて下のような絵を描画してください。「*(アスタリスク)」を使って描画します。
上から順にアスタリスクが1個, 2個, 3個, 4個, 5個, 6個と並んでいます。

*
**
***
****
*****
******

問題2

拡張for文を使用して、次のコードを書き換えてください。

public class Mondai() {
    public static void main(String[] args) {
        int[] numArray = new int[] {3, 2, 1, 0};
        String[] strArray = new String[] {"あああ", "aaa", "bbb", "おおお"};

        for (int i = 0; i < 4; i++) {
            int val = numArray[i];
            System.out.println(val + "番目の値: " + strArray[val]);
        }
    }
}

でわでわ。。。

<<< 前回 次回 >>>



投稿者:

takunoji

音響、イベント会場設営業界からIT業界へ転身。現在はJava屋としてサラリーマンをやっている。自称ガテン系プログラマー(笑) Javaプログラミングを布教したい、ラスパイとJavaの相性が良いことに気が付く。 Spring framework, Struts, Seaser, Hibernate, Playframework, JavaEE6, JavaEE7などの現場経験あり。 SQL, VBA, PL/SQL, コマンドプロント, Shellなどもやります。

コメントを残す