制御文Javaの様々な制御文。 for、拡張for配列に格納されたデータを処理していくとき、JDK 1.4より前からJavaを使っている人ならば以下のようなコードが普通に浮かぶかもしれない。 String sentence = ""; String[] words = {"Java", "で", "android", "プログラミング"}; for(int i = 0;i < words.length;i++) { sentence += words[i]; } Toast.makeText(getApplicationContext(), sentence, Toast.LENGTH_SHORT).show(); 配列のインデックスとなる変数iをfor文で配列名.lengthまで増加させて...といった具合にである。 Androidに限ったことではないが、JDK 5からは他の言語ではおなじみのfor-eachループに相当する拡張forループも使用できる。見ての通りインデックス変数は不要になっている。配列内の要素を変更する場合は使えない(下記のword変数の値を変えても配列の要素のコピーであるため、元のwords配列には影響を与えない)が、参照のみのときはバグの低減につながるだろう。 for(String word : words) { sentence += word; } Toast.makeText(getApplicationContext(), sentence, Toast.LENGTH_SHORT).show(); ループを途中で抜けるにはbreak、次のループに飛ばすにはcontinueを使用する。 while、do whilewhile文は条件が真の間ループする制御文である。 int i = 1; int sum = 0; while(i <= 10) { sum += i; i++; } Toast.makeText(getApplicationContext(), "sum = " + sum, Toast.LENGTH_SHORT).show(); do while文も条件が真の間ループする制御文であるが、条件判断が後に来るため、while文の中に書いたものが少なくとも1回は実行される。 do { sum += i; i++; } while(i <= 10); Toast.makeText(getApplicationContext(), "sum = " + sum, Toast.LENGTH_SHORT).show(); ループを途中で抜けるにはbreak、次のループに飛ばすにはcontinueを使用する。 ifif文はif節、else if節、及びelse節からなる。else if節、及びelse節は省略可能である。||(OR)や&&(AND)で複数の条件を書くことができる。 if(num == 1) { Toast.makeText(getApplicationContext(), "num = 1", Toast.LENGTH_SHORT).show(); } else if(num == 2 || num == 3) { Toast.makeText(getApplicationContext(), "num = 2 or 3", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getApplicationContext(), "それ以外", Toast.LENGTH_SHORT).show(); } switchswitch文はif文では条件判断が多すぎて煩雑になってしまう場合に重宝する。各caseの最後のbreak文がないと下の条件の文も実行しまうので必要である。また、それを逆に利用するのが複数の条件にマッチさせる(下記case 2、case 3)場合である。 default文のbreak文は不要だが、Cの時代からそれを他のcaseに転用したときにバグらないようにとの理由で書いておくことが多い。 switch(num) { case 1: Toast.makeText(getApplicationContext(), "num = 1", Toast.LENGTH_SHORT).show(); break; case 2: case 3: Toast.makeText(getApplicationContext(), "num = 2 or 3", Toast.LENGTH_SHORT).show(); break; default: Toast.makeText(getApplicationContext(), "それ以外", Toast.LENGTH_SHORT).show(); break; // なくても良い } (2012/03/02)
Copyright(C) 2004-2013 モバイル開発系(K) All rights reserved.
[Home]
|