【Kotlin】レッスン1-5:文字列の連結と埋め込みを理解しよう

ながみえ

一つ前のページではNull安全性について学習しました。

今回は 文字列の連結と埋め込み について見ていきましょう。

Lesson1:基礎文法編
 ・Lesson1-1:Kotlin学習の入り口|初めてコードを書いてみよう
 ・Lesson1-2:変数と定数を理解しよう
 ・Lesson1-3:四則演算をしよう
 ・Lesson1-4:Null安全性を理解しよう
 ・Lesson1-5:文字列の連結と埋め込みを理解しよう ◁今回はココ
 ・Lesson1-6:文字列を操作しよう
 ・Lesson1-7:import文を理解しよう
 ・確認問題1-☆1:ランダムパスワードを生成しよう
Lesson2:制御構造編
Lesson3:関数編
Lesson4:コレクション編
Lesson5:オブジェクト指向編

<<前のページ

学習記事一覧

次のページ>>

文字列の連結とテンプレート埋め込みの基本

Kotlinにおいて文字列の連結や埋め込みは、データを操作する最も基本的な方法です。

プログラム中で動的にデータを組み合わせる際に頻繁に使われるので、この章で基本をしっかり学びましょう。

+演算子で文字列を連結する方法

文字列の連結とは、複数の文字列を結合して新しい文字列を作成する操作を指します。

Kotlinでは、+演算子 を使用して簡単に文字列を結合することができます。

以下のコードを見てみましょう。

fun main() {
    val part1 = "Hello"
    val part2 = "world"
    val greeting = part1 + ", " + part2 + "!"	//2つの変数と2つの文字列を連結
    print(greeting)	// 出力: Hello, world!
}

このように、+演算子の左右にある文字列を繋げて一つの文字列にすることができます。

+演算子は簡単ですが、複数の文字列を結合するときに読みやすいコードを書くことが重要です。

文字列を連結する順序に注意しましょう。

テンプレート文字列とは?|定数・式の埋め込み方法

文字列テンプレート を使うと、文字列の中に定数や式を埋め込むことができます。

テンプレートは ${} と書き、波カッコの中に埋め込みたい定数や式を入れます。定数の場合は {}を省力することも可能です。

以下のコードを見てみましょう。

fun main() {
    // 変数を埋め込む場合
    val name = "Kotlin太郎"
    val age = 25
    println("こんにちは、$name! あなたは $age 歳ですね!") // 文字列の中に2つの変数を埋め込んで出力
    
    // 式を埋め込む例
    val x = 5
    val y = 10
    println("xとyの合計値は ${x * y} です。") // 文字列の中に式を埋め込んで出力
}

テンプレート文字列は定数や式を直感的に文字列へ埋め込める便利な機能です。

もちろん定数だけでなく変数でも同様のことができます。

まとめ|連結とテンプレート文字列を上手に使おう

文字列の連結と埋め込みは、データを効率よく操作するために不可欠なスキルです。このサイト内でも、最後まで頻繁に使用します。

この基礎をしっかり理解し、次のレッスン 文字列操作 へと進んでください。

練習問題|入力に応じたメッセージを作成しよう

ユーザーに名前と年齢を入力してもらい、それを使ってメッセージを作成するプログラムを作成しましょう。

入力された名前が空欄だった場合は「ゲスト」、年齢が無効だった場合は「不明」と表示されるようにし、誰でも簡単に実行できるシンプルなコードを目指します。

今回学習した文字列の埋め込みと連結を使用し、前回学習したNull安全性に配慮したコードを作成してください。

この問題の要件

以下の要件に従ってコードを完成させてください。

  1. 変数の宣言と初期化
    • ユーザーから名前と年齢を入力すること。
    • 名前が入力されなかった場合は「ゲスト」という文字列を代わりに使用すること。
    • 年齢が数値として無効な場合は「不明」という文字列を代わりに使用すること。
  2. 文字列の埋め込みと連結
    • 入力された(または代替された)名前を使って、「こんにちは、○○ さん!」というメッセージを作成し出力すること。
    • 年齢を使って、「あなたは ○○ 歳ですね。」というメッセージを作成し出力すること。

ただし、以下のような実行結果となること。

名前を入力してください:
太郎
年齢を入力してください:
20
こんにちは、太郎 さん!
あなたは 20 歳ですね。
名前を入力してください:

年齢を入力してください:
abc
こんにちは、ゲスト さん!
あなたは 不明 歳ですね。

この問題を解くヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

Q
ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)

1:main関数の定義(プログラムのエントリーポイント)
  □ 「名前を入力してください:」と出力
  □ readLine関数でユーザー入力を取得し、変数nameに代入
  □ 「年齢を入力してください:」と出力
  □ readLine関数でユーザー入力を取得し、変数ageInputに代入
  □ 変数nameをnullチェックし、nullの場合は”ゲスト”を使用してメッセージを生成
  □ 変数ageInputを整数に変換し、nullまたは変換失敗時は”不明”を使用してメッセージを生成
  □ 生成したメッセージを出力

Q
ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

// メイン関数:プログラムのエントリーポイント
fun main() {
    // ユーザーに名前の入力を促す
    println("名前を入力してください:")
    val name = readLine() // 入力を受け取る

    // ユーザーに年齢の入力を促す
    println("年齢を入力してください:")
    val ageInput = readLine() // 入力を受け取る

    // Null安全性と文字列埋め込みの活用例
    /*
    【穴埋め問題1】ここで変数nameを利用して「こんにちは、○○ さん!」のようなメッセージを生成するコードを書いてください。
    */
    /*
    【穴埋め問題2】ここで変数ageInputを利用して「あなたは ○○ 歳ですね。」のようなメッセージを生成するコードを書いてください。
    */

    // 結果を出力
    println(nameMessage)
    println(ageMessage)
}

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。

この問題の解答と解説

この問題の正解コードとその解説は以下の通りです。

クリックして開いて確認してください。

Q
正解コード
// メイン関数:プログラムのエントリーポイント
fun main() {
    // ユーザーに名前の入力を促す
    println("名前を入力してください:")
    val name = readLine() // 入力を受け取る

    // ユーザーに年齢の入力を促す
    println("年齢を入力してください:")
    val ageInput = readLine() // 入力を受け取る

    // Null安全性と文字列埋め込みの活用例
    val nameMessage = "こんにちは、${name ?: "ゲスト"} さん!"
    val ageMessage = "あなたは ${ageInput?.toIntOrNull() ?: "不明"} 歳ですね。"

    // 結果を出力
    println(nameMessage)
    println(ageMessage)
}
Q
正解コードの解説

コードをブロックごとに分けて詳しく説明します。

メイン関数の開始

fun main() {
    println("名前を入力してください:")
    val name = readLine()
  • fun main(): Kotlinプログラムのエントリーポイント。ここからプログラムが実行されます。
  • println: 標準出力にメッセージを表示します。ここではユーザーに名前を入力するよう促しています。
  • readLine(): 標準入力から文字列を読み取ります。この場合ユーザーが入力した名前を取得します。

ユーザーからの年齢入力

println("年齢を入力してください:")
val ageInput = readLine()
  • 名前と同様にユーザーに年齢を入力してもらいます。
  • readLine()を再び使用してユーザーが入力した文字列を取得します。

文字列の埋め込みとNull安全性

val nameMessage = "こんにちは、${name ?: "ゲスト"} さん!"
val ageMessage = "あなたは ${ageInput?.toIntOrNull() ?: "不明"} 歳ですね。"
  1. 文字列テンプレート${}:
    • ${name}のように変数を直接文字列中に埋め込むことで、連結するよりも簡潔に表現できます。
    • エルビス演算子?:を使用して、namenullの場合には「ゲスト」と表示します。
  2. toIntOrNull():
    • ageInputが数値に変換できる場合はその値を返し、できない場合はnullを返します。
    • これにより年齢が無効な場合は「不明」と表示されます。

メッセージの出力

println(nameMessage)
println(ageMessage)

ここで生成したメッセージを標準出力に表示します。

  • 名前が入力されない場合: 「こんにちは、ゲスト さん!」
  • 年齢が無効な場合: 「あなたは 不明 歳ですね。」

まとめ

このコードでは文字列の連結と埋め込みを利用して、ユーザーの入力を使った動的なメッセージを生成する方法を学びました。

  • 文字列テンプレート${}は簡潔で直感的な方法で文字列を操作でき、特に入力値を直接文字列に含める場面で役立ちます。
  • Null安全性を考慮し、エルビス演算子?:toIntOrNull()を使用することで、入力エラーにも対応可能なコードを書けるようになります。

これらの技術は初心者がKotlinでプログラミングを学ぶ上で重要な基礎となります。

この知識を活かして、さらに複雑なプログラムにも挑戦してみましょう!

Q
サイト改善アンケート & ご指摘/ご質問

本サイトでは、みなさまの学習をよりサポートできるサービスを目指しております。
そのため、みなさまの「プログラミングを学習する理由」などを アンケート 形式でお伺いしています。

また記事の内容に関する ご指摘ご質問 もお待ちしています。

1.このサイトをどのように活用していますか?また、今後どのように活用したいですか?
5.気になっているサービス・商品があれば教えてください。
※ 特定の記事に関する内容の場合は、記事番号(レッスン〇-〇)をご記入願います。

<<前のページ

学習記事一覧

次のページ>>

記事URLをコピーしました