学生向けプログラミング入門 | 無料

学生向けにプログラミングを無料で解説。Java、C++、Ruby、PHP、データベース、Ruby on Rails, Python, Django

Java | 10 | switch

↓↓クリックして頂けると励みになります。



09 | 複雑な条件分岐】 << 【ホーム】 >> 【11 | 配列


caseを使った条件分岐
caseを使った条件分岐





Javaにおけるswitch文は、複数の条件に基づいてプログラムの制御を分岐させるための制御構造の一つです。
switch文は、指定された式の値に応じて、一連のケース(case)の中からマッチするものを見つけ、そのケースに対応するブロックを実行します。
break文は、switch文から抜け出すためのものです。
break文がない場合、一致するcaseの処理が実行された後、次のcase文が連続して実行されます。
break文を使うことで、該当するcaseの処理が終了するとswitch文から抜け出します。




Visual Studio Codeで以下の「SwitchTest.java」を作成します。


新規作成 【SwitchTest.java】

public class SwitchTest { 
	public static void main ( String[] args ) { 

		char c = 'B'; 

		switch (c) { 
			case 'A': 
				System.out.println ( "AAAAAAAAAA" ) ; 
				break; 
			case'B' : 
				System.out.println ( "BBBBBBBBBB" ) ; 
				break; 
			case'C' : 
				System.out.println ( "CCCCCCCCCC" ) ; 
				break; 
			default: 
				System.out.println ( "0123456789" ) ; 
		} 
	} 
}



まず、switch文の構成を見てください。

switch (条件) {

    case'条件1':
             実行文;
             break;
    case'条件2':
             実行文;
             break;
    default:
          実行文;
 }



このswitch文はif文と同じで条件分岐に使います。
if文より内容が直感的にわかり見やすいというのが特徴です。
ただ複雑な条件分岐には使用できないのが欠点です。


switchの条件に当てはまれば、caseが順番に処理されていきます。
caseの条件に当てはまれば実行文が実行されbreakでswitchを抜けます。
どのcaseにも当てはまらない場合は、defaultが処理されます。
defaultにbreakはいりません。


caseの条件は何個でもつなげることができます。
caseの後の条件はシングルコーテーション「'」で囲み、その後に必ずコロン「:」をつけます。
実行文が終わったら「break;」を記述します。
breakを忘れると無限ル ープとなる場合があるので注意してください。


case条件のどれにも当てはまらなかったら、defaultの内容が実行されます。
defaultは記述してもしなくてもどちらでも良いです。


break;が処理されると、switch文から抜けます。


ではプログラムの実行結果を確認しましょう。
今回は変数cをchar型で宣言しています。
char型は文字列を格納するのに使います。

~/Desktop/Programming/JP $ javac SwitchTest.java

~/Desktop/Programming/JP $ java SwitchTest     
BBBBBBBBBB



Visual Studio Codeで以下の「SwitchTest2.java」を作成します。


新規作成 【SwitchTest2.java】

public class SwitchTest2 { 
	public static void main ( String[] args ) { 

		char c = 'B' ; 
	
		switch (c) { 
			case 'A': 
				System.out.println ( "AAAAAAAAAA" ); 
			case'B' : 
				System.out.println( "BBBBBBBBBB" ); 
			case'C' : 
				System.out.println ("CCCCCCCCCC" ); 
			default: 
				System.out.println ( "0123456789 " ); 
		} 
	} 
}



break;の記述がないときどのような結果になるかを示すプログラムです。
無限ループにはなりませんが、case'B'以降のすべての実行文が実行されているのがわかります。
ちなみに、defaultがなくても今回は無限ループにはなりません。

~/Desktop/Programming/JP $ javac SwitchTest2.java

~/Desktop/Programming/JP $ java SwitchTest2     
BBBBBBBBBB
CCCCCCCCCC
0123456789 



Visual Studio Codeで以下の「IfTest6.java」を作成します。


新規作成 【IfTest6.java】

import java.util.Calendar; 

public class IfTest6 { 
	public static void main ( String argv[] ) { 

		Calendar cal = Calendar.getInstance(); 
		int hour = cal.get( Calendar.HOUR_OF_DAY ); 

		if (hour > 5 && hour < 12 ) {
			System.out.println ("おはようございます。" );
		} 
		else if ( hour < 17 ) { 
			System.out.println ( "こんにちは。" );
		} 
		else if (hour < 19 ) { 
			System.out.println ( "こんばんは。" );
		} 
		else { 
			System.out.println ("おやすみなさい。" ) ;
		}
	} 
}



import java.util.CalendarでjavaのCalendarパッケージを使うことを宣言しています。

Calendar cal = Calendar.getInstance(); 
int hour = cal.get( Calendar.HOUR_OF_DAY ); 



この文の意味は、変数int hourにその日の現在の時間を代入するという意味です。


JavaのCalendarクラスは、日付や時刻の操作を提供するためのクラスです。
CalendarクラスはJavaの標準ライブラリに含まれており、java.utilパッケージに所属しています。
Calendarクラスを使うには、まずjava.utilパッケージをインポートします。
その後、Calendarクラスのインスタンスを作成し、そのインスタンスを使用して日付や時刻の操作を行います。
今回行ったことが、Javaのパッケージを利用する際の基本的な記述になります。


この例では、Calendar.getInstance()メソッドを使用してCalendarクラスのインスタンスを取得し、そのインスタンスのgetメソッドを使用して年、月、日、時、分、秒を取得しています。
Calendarクラスは、日付や時刻の操作を行うための様々なメソッドを提供しています。
これらのメソッドを使用して、日付や時刻の加算・減算、比較、フォーマットなどを行うことができます。


プログラムをコンパイルして実行結果を確認します。

~/Desktop/Programming/JP $ javac IfTest6.java 
   
~/Desktop/Programming/JP $ java IfTest6      
こんにちは。



「IfTest6.java」をSwich文で書き換えます。
Visual Studio Codeで以下の「SwitchTest3.java」を作成します。


新規作成 【SwitchTest3.java】

import java.util.Calendar; 

public class SwitchTest3 { 
	public static void main ( String argv[] ) { 

		Calendar cal = Calendar.getInstance(); 
		int hour = cal.get ( Calendar.HOUR_OF_DAY ) ; 

		switch ( hour ) { 
			case 6: 
			case 7: 
			case 8: 
			case 9: 
			case 10: 
			case 11: 
				System.out.println( "おはようございます。" ); 
				break; 
			case 12: 
			case 13:
			case 14: 
			case 15: 
			case 16: 
				System.out.println( "こんにちは。"); 
				break; 
			case 17: 
			case 18: 
				System.out.println ("こんばんは。"); 
				break; 
			default: 
				System.out.println ("おやすみなさい。"); 
		} 
	} 
} 



if文とswitch文を比べてみてください。
実行結果は「IfTest6.java」と同じになります。

~/Desktop/Programming/JP $ javac SwitchTest3.java

~/Desktop/Programming/JP $ java SwitchTest3     
こんにちは。



09 | 複雑な条件分岐】 << 【ホーム】 >> 【11 | 配列





↓↓クリックして頂けると励みになります。