Java プログラム

【Javaプログラム】ifとswitchによる条件分岐を理解しよう!

2020年4月19日

Javaでプログラムを練習する中で、「条件分岐」は欠かすことができません。そもそも、条件分岐とはどういったものでしょうか?そして、Javaではどうやって使えばよいのでしょうか?

この記事では、ifとswitchによる条件分岐について、詳細に解説します。

条件分岐とは?

条件分岐とは、その字面通り「特定の条件に合わせて、処理を分岐すること」です。例えば、学校の成績の集計を思い出してください。あなたは今、期末テストの採点をし終わりました。

テストの結果を集計し、平均点未満を赤点とする場合を考えましょう。

このとき、「学生が平均点未満か否か」判断が必要です。これを「条件」といい、条件に合わせて処理を変えることを「条件分岐」といいます。

条件分岐はifとswitchと三項演算子

それでは、具体的にJavaの条件分岐を使ってみましょう。

Javaの条件分岐には3つの方法があります。

条件分岐には3つの方法

  • if
  • switch
  • 三項演算子(今回は説明を省きます)

特に、よく使われるのがifとswitchです。これらは、「ifステートメント」や「switchステートメント」、「switch/caseステートメント」などと言われることもあります。

最後の三項演算子は、使用頻度は高くありませんので、今回は説明を省きます。中級者や上級者にステップアップするときに覚えると良いでしょう。

ifステートメントによる条件分岐-基本の形

aさん30点、bさん50点、cさん70点。3人の平均点を求め、aさんが平均点以下なら赤点と出す例

まず、Javaの条件分岐で最も基本となるのは「ifステートメント」です。

指定した条件に当てはまる際に、特定の処理を行えます。

if条件{
  処理内容1
  処理内容2
  :
}

ココがポイント

  • ifの直後に書く条件は、必ず半角丸カッコ()で囲む
  • 処理内容は何行でも書けるが、1行に1つの処理を書き、行末に半角セミコロン(;)を置く
  • 処理内容を書く場合は、必ず「インデント」する

特に、Javaのプログラムでは「インデント」(字下げ)がとても大切です。

インデントとは、処理のまとまりを見やすく&わかりやすくするために、波括弧で囲まれた範囲の行頭に、半角スペースやタブ文字を入れて字下げをすることです。

インデントがおかしいと、プログラムがとても読みにくくなります。また、場合によっては他者から非難されることもある、大切なポイントです。

脱初心者のためにも、必ず「ifの波括弧で囲まれた範囲はインデントする」ことを習慣づけましょう。

[Main.java]

注意ポイント

変数「var」について
Java 10では、ローカル変数時のvarを用いた型推論が使用可能になりました。簡単に言えば、変数利用時に型を意識せずに「var」を使って型宣言ができる機能です。
java 10以前の方は「int」「float」等の型を明確に指定する必要があります。

java10以前の型宣言のコードは下記の様になります。

コンソール

平均点50.0
赤点

メモ

java10以降、明示的に型を宣言する必要がなくなったことは大変便利なのですが、商用プロジェクトにおいては、既存のjavaプログラムは、ほぼ100%と言ってもいいほどjava10以前に書かれていることが殆どです。
思わぬトラブルを起こさないためにも、きちんと型の理解はしておきましょう。

サイコロゲームとelse

Javaの習得は「習うより慣れろ」が一番の早道です。
ここからは、実際にコードを手で入力しながら覚えていきましょう。

Javaでサイコロゲームを作った。サイコロの出目が1なら大当たり!

サイコロの出目が1と異なる場合はハズレ。

プログラムによっては、1つの条件に当てはまる場合と、それ以外の場合で処理を分けたいことがあるでしょう。

条件に当てはまる場合アクション1を実行し、当てはまらない場合elseで指定されたアクション2を実行します。

if (条件) {
  アクション1;
  :
} else {
  アクション2;
  :
}

[ Main.java ]

BMIの判定とelse if

体重と身長を指定すると、BMIを計算してくれる。60kg172cmは普通。

80kg172cmは肥満。

50kg172cmは痩せ型。

場合によっては、条件が2つよりも多いことがあります。その際は「else ifステートメント」を用いることで、条件分岐を複数記述できます。なお、「else」と「if」の間には、半角スペースを必ず入れます。

if (条件) {
  アクション1;
  :
} else if (条件2) {  👈 必要な数だけ「条件3」「条件4」と条件文を足していく
  アクション2;
  :
} else {
  アクション3;
  :
}

[ Main.java ]

switch caseステートメントによる条件分岐

サイコロの出目に合わせて占い結果を出す例。

次に、「switchステートメント」による条件分岐を解説します。switchは、以下に示す条件に合致する場合に使用します。

Case文の条件

  • 条件分岐には3つの方法
  • 1つの要素が別の要素に対応できる場合

例えば、サイコロを振って、その出目を元に占いをする例を考えましょう。

  • 出目が1:大吉
  • 出目が2:中吉
  • 出目が3:吉
  • 出目が4:末吉
  • 出目が5:凶
  • 出目が6:大凶

これは見たら分かる通り、サイコロの出目一つ一つの要素が、別の占いの一つ一つの結果に対応できます。このような条件分岐で使用するのが、switchです。

switch(変数) {
  case 状態1:
    状態1の処理;
    break;
  case 状態2:
    状態2の処理;
    break:
  case ~
    ~;
    break:
  default:
    条件に当てはまらない時の処理;
    break;
}

ココがポイント

基本的にswitchが使用できる箇所では「if~else if~else」を用いるよりも適切な場合が多いと覚えておきましょう。

  • switchの方が記述がシンプルになりやすい
  • switchの方が可読性(読みやすさ)が高くなりやすい
  • switchなら前後の条件に影響されないため、分かりやすい

「if~else if~else」と「switch/case」とを書き比べ場合、switchの方が読みやすいです。

[ Main.java ]

まとめ

条件分岐はプログラムを書く上で基本的な事項です。今回の内容を復習し、分からない点が無いか再確認しましょう。

条件分岐のポイント

  • Javaには3つの条件分岐の方法があるが、主にifステートメントとswitchステートメントを使う
  • Javaの条件は条件式で記述し、条件式の結果は必ず真偽値になる
  • 「if」は一つの条件で分岐ができる
  • 「if~else」の形式で、で一つの条件とそれ以外の条件で分岐ができる
  • 「if~else if~else」の形式で、複数の条件で分岐ができる
  • ただし、「一つ一つの要素が別の一つ一つの要素へ対応できる」場合は、「switch~case~default」を使用する方が適することが多い

よく読まれている記事

1

目次1 Shellとは?1.1 代表的なシェルの種類2 シェルスクリプトの違いとは? Shellとは? Shellとは、人間の理解できる言葉を機会へ伝えるプログラムです。 Linux環境でコマンドプロ ...

2

Linuxは主にサーバー用として利用されるOSです。大規模な基幹システムの開発者、ロボットや家電開発等の組み込み系エンジニア、ネットワーク機器やデータベースに携わるインフラエンジニアは触れることが多い ...

3

プログラミング言語を習得しようと思った時、必ずと言っていいほど候補として挙げられるのが「Java」というプログラミング言語です。 「Java」は、現在日本で最も使われている言語であり、非常に人気のある ...

4

この記事は、Linuxについて勉強している初心者の方向けに「Shellスクリプト」について解説します。最後まで読んで頂けましたら、Shellスクリプトはどのような役割を担っているのか?を理解出来るよう ...

-Java プログラム

Copyright© Beエンジニア , 2020 All Rights Reserved.