はじめてのJava ~制御文編~
スポンサーリンク
種類は多いですが意味のわかりやすい名前を付けられているので、簡単に覚えられると思います。
ぜひ使いながら覚えてください。
if文
以下のように使います。
class Statement1 { public static void main(String args[]) { int a = 0; if(a == 0) { System.out.println("true"); } } }
// 出力 true
if文は( )の中がtrue(真)のときはその後の{ }の中を実行し、false(偽)のときは実行しません。
{ }がない場合は直後の1文だけが実行されます。
「a == 0」というのは「aが0に等しい」ということを表しています。
Javaの場合、「a = 0」と書くとaに0を代入するという意味なので注意しましょう。
以下は関係演算子の一覧です。
関係演算子 | 意味 |
---|---|
== | 左項と右項が等しい |
!= | 左項と右項が等しくない |
> | 左項が右項より大きい |
< | 左項が右項より小さい |
>= | 左項が右項以上 |
<= | 左項が右項以下 |
if-else文
ifの後にelseを追加することで、if( )の中が偽の場合の処理を指定できます。
次のように使います。
class Statement2 { public static void main(String args[]) { int a = 1; if(a == 0) { System.out.println("true"); } else { System.out.println("false"); } } }
// 出力 false
また、elseとifを組み合わせることで3つ以上に条件分岐させることもできます。
class Statement3 { public static void main(String args[]) { int a = 2; if(a == 0) { System.out.println("0"); } else if(a == 1) { System.out.println("1"); } else { System.out.println("a is neither 0 nor 1."); } } }
// 出力 a is neither 0 nor 1.
for文
for文は繰返しを行う制御文です。
以下のように使います。
class Statement4 { public static void main(String args[]) { for(int i = 0; i < 5; i++) { System.out.println(i); } } }
// 出力 0 1 2 3 4
( )の中にセミコロン区切りで3つの文を書きます。
1つ目は初期化です。
上の例ではiを0で初期化しています。
2つ目は繰返しを続ける条件です。
上の例ではiが5以上になるまで繰返しを続けるように指定しています。
5以上になったら繰返しは終わるので5は出力されていません。
3つ目は増減幅です。
上の例では繰返しが1回終わるごとに、iを+1しています。
while文
while文も繰返しを行う制御文です。
while文は以下のように使います。
class Statement5 { public static void main(String args[]) { int i = 0; while(i < 5) { System.out.println(i); i++; } } }
// 出力 0 1 2 3 4
for文の例と同じことをしたプログラムです。
これだけ見るとfor文のほうがすっきりしていますが、while文のほうが適している状況もあります。
それは繰返しの条件が数値ではないときです。
例えば、キーボードで入力を受け付け、ある文字が入力されるまでは処理を続けるという場合。
// whileを用いた場合 import java.io.*; class Statement6 { public static void main(String args[]) { try { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); while(br.readLine().equals("a")) { // 入力受付 } System.out.println("end"); br.close(); } catch(Exception e) { System.out.println("Exception: " + e); } } }
// forを用いた場合 import java.io.*; class Statement7 { public static void main(String args[]) { String s = ""; try { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); for( ; ; ) { s = br.readLine(); if(!s.equals("a")) { break; } } System.out.println("end"); br.close(); } catch(Exception e) { System.out.println("Exception: " + e); } } }
whileを用いたほうがすっきりしていますよね。
このように上手く使い分けることで見やすいコードを書くことができます。
do-while文
whileでは条件によっては1回も{ }内の処理を行わず終了することがありますが、do-whileでは必ず1回は{ }内の処理を行います。
例えば、
class Statement8 { public static void main(String args[]) { int i = 10; while(i < 5) { System.out.println(i); i++; } } }
// 出力
上記のコードでは、iは最初から10でwhileの条件が i < 5 なので、{ }の中の処理は一度も行われずに終了します。
これをdo-whileにすると、
class Statement9 { public static void main(String args[]) { int i = 5; do { System.out.println(i); i++; } while(i < 5); } }
// 出力 5
と一度だけ{ }の中の処理が行われていることがわかります。
break文
break文はループを強制終了させることができます。
break文は以下のように使います。
class Statement10 { public static void main(String args[]) { for(int i = 0; i < 10; i++) { System.out.println(i); if(i == 5) { break; } } } }
// 出力 0 1 2 3 4 5
iが5に等しいときに強制終了したため、それ以降は出力されません。
continue文
continue文はそれ以降の処理をスキップし、次の繰返しに移ります。
言葉ではわかりにくいと思うので、コードをしっかり読んで理解してください。
class Statement11 { public static void main(String args[]) { for(int i = 0; i < 10; i++) { if(i == 5) { continue; } System.out.println(i); } } }
// 出力 0 1 2 3 4 6 7 8 9
iが5に等しいときはcontinue以降の処理をスキップするため、5だけ表示されていません。
switch文
switch文はif文の複数バージョンです。
if文でもelseを使えば複数に条件分岐できますが、見栄えがよくありません。
3つ以上に分岐するときはswitch文を使うとよいでしょう。
switch文は以下のように使います。
class Statement12 { public static void main(String args[]) { int i = 3; switch(i) { case 1: System.out.println("one"); break; case 2: System.out.println("two"); break; case 3: System.out.println("three"); break; } } }
// 出力 three
breakがないとそれ以降の処理をすべて実行してしまいますので、忘れないようにしましょう。