Java Step_5 制御文

条件分岐
Javaプログラムは、mainメソッドの中を上から下に向かって順番に実行していきます。しかしそれでは単純な処理しかできないため、 制御文を使います。制御文には「条件分岐」するものと「ループ」するものがあります。
条件分岐は、条件によって文やブロックを実行するかスキップするかを決めることができます。 条件分岐を実行するために使われるのは「if〜else文」「switch文」「break文」です。

if 〜 else文

if条件が成立すると実行がifブロックの中へ進む
成立しない場合は実行せずに } の次へ進む
if 〜 else条件が成立すると実行がifブロックの中へ進み、 条件が成立しなければ、ifブロックをスキップしてelseブロックへ進む。どちらか片方だけが実行される。
if 〜 else
if 〜 else
....
if 〜 else
1つめの条件が成立すると ifブロックを実行し、以降のブロックはスキップされる。
この条件が成立しないと ifブロックはスキップされ、2つめの ifブロックを実行する。条件が成立すると、このelse if ブロック内を実行し以降のブロックはスキップされる。
どの条件も成立しないときは、ifブロック、else ifブロックもスキップし、最後のelseブロックだけが実行される。


《 if 〜 else 文のサンプルプログラム》
class Myifelse{
	public static void main(String args[]){
		int kazu = 10;    // int型変数kazuに10を代入
		
		// if文
		if (kazu < 20){
			system.out.println( kazu + " は 20より小さい");
		}
		
		// if 〜 else 文
		if (kazu <= 5){
			system.out.println( kazu + " は 5 以下である");
			}else {
			system.out.println( kazu + " は 5 より大きい");
			}
		// if 〜 else  if 〜 else 文
		
		if (kazu == 8){
			system.out.println( kazu + " は 8 である");
		} else if (kazu == 9){
			system.out.println( kazu + " は 9 である");
		} else if (kazu == 10){
			system.out.println( kazu + " は 10 と等しい");
		} else{
			system.out.println( kazu + " は 8,9,10 以外である");
		}
	}
}	

《実行結果》


switch と break

《switch とbreak のサンプルプログラム》
class Myswitch{
  public static void main(String args[]){
  
  char key = 'y';
  
  switch(key){
    case 'y':System.out.println("key は 'y' です");
             break;
    case 'Y':System.out.println("key は 'Y' です");
             break;        
    case 'n':System.out.println("key は 'n' です");
             break;
    case 'N':System.out.println("key は 'N' です");
             break; 
    default:System.out.println("key は 'Y,y,N,n'以外です");
   
    }
   }
 }
《実行結果》


ループ

for文
「for文」はループする回数が決まっている繰り返しの命令です。 繰り返した回数(ループカウンタ)を記憶しておくint型変数を使います。
for (カウンタの初期化;条件;カウンタ操作)
      文;
      文;
     .....
}


《for文 のサンプルプログラム》
class Myfor{
  public static void main(String args[]){
  
  double hairetu[] = {0.0,0.1,0.2,0.3,0.4};  //(1)
  
  for (int i=0; i<5; i++){  //(2)
    system.out.println("hairetu[" + i + "] → " + hairetu[i]);  //(3)
  }
 }
}
《実行結果》


《プログラムの解説》
  1. 実数型の配列変数(hairetu)に5個のデータを代入
  2. 5回繰り返すための条件。i の値は繰り返すごとに1つ増える
  3. hairetu の i 番目の値を表示する。
while文
while(条件){
  文;
  文;
  ......
}

while文も、for文と同じように繰り返しを行いますが回数を指定するとは限りません。条件が成立する間ブロックの中を実行します。ブロックの中に条件が成立しなくなる文を書いておかないと無限ループになってしまいます。

《 while文 のサンプルプログラム》
class Mywhile{
  public static void main(String args[]){
  
  //配列の初期化
  int hairetu[] = {1,2,3,4,5}; 
  
  //配列の添え字初期化
  int i = 0;

   //while文を使って値が3以下の配列要素を探す
  while(hairetu[i] <= 3){ 
    System.out.println("hairetu[" + i + "] → " + hairetu[i]);
    i++;
  }
 }
}
《実行結果》

do-while 文
do{
   文;
   文;
   .....
}while(条件);
while文が条件を判定してからブロックを実行するのに対し、do-while文はブロックを実行してから条件を判定します。
違う点は、while文は1度もブロックを実行しない場合がありますが、do-while文は必ず一度は実行することです。

《do-while文 のサンプルプログラム》
class Mydowhile{
  public static void main(String args[]){

  int hairetu[] = {1,2,3,4,5}; 
  
   int i = 0;
  
   do{ //1回目は必ずループに入る 
   System.out.println("hairetu[" + i + "] → " + hairetu[i]);
   i++; 
  }while(hairetu[i] <= 3);//条件を判定
 }
}
《実行結果》


continue文
continue文はループの中で使われ、それ以降の文を実行せずに次の繰り返しに入ります。
while文とdo-while文のときには条件の判定に、for文のときはカウント操作に移ります。 ループが入れ子になっているときには、現在のループの先頭に移動します。

《continue文 のサンプルプログラム》

class Mycontinue{
  public static void main(String args[]){
  
  int hairetu[] = {1,2,3,4,5};
  
  for (int i=0; i<5; i++){
    if(i==3){
      continue;
    }
    System.out.println("hairetu[" + i + "] → " + hairetu[i]);
  }
 }
}
《実行結果》


※このサンプルでは、hairetu[3]に代入された値「4」が表示されていません。