【Kotlin】レッスン2-2:if文による分岐処理を理解しよう

一つ前のページでは比較演算子と論理演算子について学習しました。
今回は if文による分岐処理 について見ていきましょう。
Lesson1:基礎文法編
Lesson2:制御構造編
・Lesson2-1:比較演算子と論理演算子を理解しよう
・Lesson2-2:if文による分岐処理を理解しよう ◁今回はココ
・Lesson2-3:when文による分岐処理を理解しよう
・Lesson2-4:スマートキャストを理解しよう
・Lesson2-5:for文による繰り返し処理を理解しよう
・Lesson2-6:while文による繰り返し処理を理解しよう
・Lesson2-7:繰り返しを制御しよう
・Lesson2-8:エラーメッセージを読めるようになろう
・Lesson2-9:例外処理を理解しよう
・確認問題2-☆1:ハイアンドローゲームを作ろう
・確認問題2-☆2:数字当てゲームを作ろう
・確認問題2-☆3:簡単なじゃんけんゲームを作ろう
Lesson3:関数編
Lesson4:コレクション編
Lesson5:オブジェクト指向編
if文を理解しよう|条件によって処理を分ける基本
if文は「条件が成立するかどうか」を判断して、成立した場合だけ特定の処理を実行するための構文です。
たとえば、「もしスコアが80点以上なら合格」といったルールをプログラムで表現できます。

if文による分岐処理の役割と基本構文
if文は条件が成立した場合に特定の処理を実行するための構造です。
プログラムが基本的には上から順に実行される(順次処理)中で、if文を使うと実行の流れを動的に変更できます。
条件分岐を活用することで、より複雑なロジックを簡潔に表現することが可能です。
if文の基本構文(書き方)は以下のようになります。
if (条件) { // 条件が真(true)の場合に実行される処理 }
例えば、aの値が正の数のときだけメッセージを表示するプログラムは以下のようになります。
val a = 10 if (a > 0) { // もしaが0よりも大きいなら println("aは正の数です。") // 「aは正の数です。」と出力する }
aの値が負の数だった場合はif文の条件は成立しないため、if文の中の処理は実行されません。
さらに、条件が成立しなかった場合の処理を指定するにはelseを使います。
if (条件) { // 条件が真(True)の場合の処理 } else { // 条件が偽(false)の場合の処理 }
また複数の条件をチェックする場合には、else if
を組み合わせることができます。
if (条件1) { // 条件1が真の場合の処理 } else if (条件2) { // 条件2が真の場合の処理 } else { // いずれの条件も満たさない場合の処理 }
if文による分岐処理の使用コード例
if文を使用した例を2つ紹介します。
一つの条件で分岐するコード例
次のコードは数値を比較してメッセージを出力する例です。
val number = 10 if (number > 0) { // もし定数numberの値が0より大きいなら println("numberは正の数です") // この処理を実行する } else { // もしそうでないなら println("numberは0または負の数です") // この処理を実行する }
このコードではnumber
が0より大きい場合に「numberは正の数です」を出力し、それ以外の場合には「numberは0または負の数です」を出力します。
複数の条件で分岐するコード例
次のコードはユーザーが入力した値をチェックし、それに応じたメッセージを出力する例です。
val score = 85 if (score >= 90) { // もし点数が90点以上なら println("素晴らしい成績です!") // この処理を実行する } else if (score >= 60) { // もし点数が90点未満かつ60点以上なら println("合格です") // この処理を実行する } else { // もしどの条件にも当てはまらないなら println("もっと頑張りましょう") // この処理を実行する }
この例ではスコアが90以上の場合に褒め言葉を出し、60以上の場合は合格、そうでない場合は励ましのメッセージを出力します。
ネスト構文とは?|if文の中にif文を入れ込む書き方
さらに複雑な条件が必要な場合、if文をネストする(if文の中にif文を入れる)こともできます。
val num = -5 if (num > 0) { // もしnumが0より大きいなら if (num % 2 == 0) { // もしnumが偶数なら(numを2で割って余りが0なら) println("正の偶数です") } else { // もしnumが偶数でないなら println("正の奇数です") } } else { // もしnumが0以下なら println("負の数またはゼロです") }
このコードでは、まず初めにnumが0以上であるかを判定し、0以上の場合だけ偶数か奇数かの判断をしています。
ネストを使うことで、複数の条件を効率的に組み合わせて処理を行えます。
この例ではnum
が負の値の場合に早期に"負の数は無効です"
を返し、それ以降の処理をスキップします。
まとめ
if文はプログラムで「条件による分岐」を実現するための最も基本的な構文です。
状況に応じてif、if-else、if-else if-elseを使い分けることで、より柔軟でわかりやすい処理が書けるようになります。
Kotlinのif文の使い方をしっかり身につけて、さまざまな条件分岐に挑戦してみましょう!
if文の練習問題|数値の種類を判別するプログラムを作ろう

if文を使用して入力された数値が正の数、ゼロ、または負の数であるかを判別するプログラムを作成してください。
数値以外の入力に対しても適切なエラーメッセージを表示します。
この問題を通して条件分岐の基本構造を学びましょう。
この問題の要件
以下の要件に従ってコードを完成させてください。
- メイン関数内で以下を実行すること。
- ユーザーに「数値を入力してください」と表示し、入力を受け取ること。
- 入力を文字列として取得し、数値に変換する際にNull安全性を考慮すること。
- 入力が無効な場合「無効な入力です。数値を入力してください」と表示すること。
- 入力された数値に対し以下を判別すること。
- 正の数の場合、「入力された数値は正の数です」と表示すること。
- ゼロの場合、「入力された数値はゼロです」と表示すること。
- 負の数の場合、「入力された数値は負の数です」と表示すること。
ただし、以下のような実行結果となること。
数値を入力してください: 5 入力された数値は正の数です。
数値を入力してください: -3 入力された数値は負の数です。
数値を入力してください: 0 入力された数値はゼロです。
数値を入力してください: abc 無効な入力です。数値を入力してください。
この問題を解くヒント
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
- ヒント1【コードの構成を見る】
-
正解のコードは上から順に以下のような構成となっています。
1:main関数の定義
□ 「数値を入力してください:」と出力
□ readLine関数でユーザーからの入力を文字列として取得し、input変数に代入
□ toIntOrNull関数でinputを数値に変換し、number変数に代入
□ if文にてnumberがnullかを判定
□ □ 真の場合、「無効な入力です。数値を入力してください。」と出力
□ else文
□ □ if文にてnumberが0より大きいか判定
□ □ □ 真の場合、「入力された数値は正の数です。」と出力
□ □ else if文にてnumberが0かを判定
□ □ □ 真の場合、「入力された数値はゼロです。」と出力
□ □ else文
□ □ □ 「入力された数値は負の数です。」と出力
- ヒント2【穴埋め問題にする】
-
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
fun main() { // ユーザーに数値を入力してもらう println("数値を入力してください:") val input = readLine() // 入力を文字列として受け取る // 入力を数値に変換する(Null安全性を考慮) val number = input?.toIntOrNull() // 入力が数値でない場合のエラーメッセージ if (number == null) { println("無効な入力です。数値を入力してください。") } else { /*【穴埋め問題1】 ここで入力された値が0より大きいか、ゼロか、負の数かを判定し、それぞれに応じたメッセージを表示するif文を書いてください。 */ } }
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
この問題の解答と解説
この問題の正解コードとその解説は以下の通りです。
クリックして開いて確認してください。
- 正解コード
-
fun main() { // ユーザーに数値を入力してもらう println("数値を入力してください:") val input = readLine() // 入力を文字列として受け取る // 入力を数値に変換する(Null安全性を考慮) val number = input?.toIntOrNull() // 入力が数値でない場合のエラーメッセージ if (number == null) { println("無効な入力です。数値を入力してください。") } else { // 条件分岐で入力値を評価 if (number > 0) { println("入力された数値は正の数です。") } else if (number == 0) { println("入力された数値はゼロです。") } else { println("入力された数値は負の数です。") } } }
- 正解コードの解説
-
コードをブロックごとに分割してこのコードをブロックごとに分解し、それぞれの内容を解説します。
メイン関数の開始
fun main() { println("数値を入力してください:") val input = readLine()
fun main()
: Kotlinプログラムのエントリーポイントです。ここからコードが実行されます。println("数値を入力してください:")
: コンソールにメッセージを表示します。ユーザーに入力を促す文です。val input = readLine()
: ユーザーの入力を文字列として受け取ります。この値は後の処理で使用されます。
Null安全性を考慮した数値の変換
val number = input?.toIntOrNull()
input?.toIntOrNull()
: 入力された文字列を数値に変換します。もし文字列が数値に変換できない場合(例えば、abc
のような入力)はnull
を返します。これによりプログラムの安全性を向上させます。
if文を使ったエラーチェック
if (number == null) { println("無効な入力です。数値を入力してください。") } else {
if (number == null)
: 変数number
がnull
である場合に実行される処理です。これは無効な入力を判別するためのコードです。println("無効な入力です。数値を入力してください。")
: 無効な入力であることをユーザーに通知します。
if文による条件分岐
if (number > 0) { println("入力された数値は正の数です。") } else if (number == 0) { println("入力された数値はゼロです。") } else { println("入力された数値は負の数です。") }
println("入力された数値は負の数です。")
: 負の数であることを通知します。if (number > 0)
: 入力された数値が正の数である場合にこの条件が成立します。println("入力された数値は正の数です。")
: 条件が成立した場合に出力されるメッセージです。else if (number == 0)
: 入力された数値がゼロの場合に成立する条件です。println("入力された数値はゼロです。")
: 条件が成立した場合にゼロであることを通知します。else
: 上記の条件に該当しない場合(負の数)の処理です。
まとめ
このプログラムではKotlinにおけるif文による分岐処理を活用し、ユーザー入力に基づく動的な判定を実現しています。
特に注目すべきポイントは、以下の2つです。
- Null安全性の考慮: 入力値を直接数値に変換せず、
toIntOrNull
を用いることでエラーを防止しています。 - 条件分岐の柔軟性:
if
、else if
、else
を使用して異なる条件に応じた処理を簡潔に記述しています。
このコードを通じてKotlinの基本的な制御構文であるif文
を実践的に学ぶことができます。
ぜひ異なる条件や入力パターンでコードを試してみてください!
- サイト改善アンケート & ご指摘/ご質問
-
本サイトでは、みなさまの学習をよりサポートできるサービスを目指しております。
そのため、みなさまの「プログラミングを学習する理由」などを アンケート 形式でお伺いしています。また記事の内容に関する ご指摘 や ご質問 もお待ちしています。