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

記事内に商品プロモーションを含む場合があります

この記事で学べる知識:文字列の連結と埋め込み

この記事の練習問題を解くために必要な知識:
メイン関数入力と出力の基本コメントの書き方変数と定数算術演算子Null安全性文字列の連結と埋め込み文字列操作import文

<<前のページ Kotlin記事一覧 次のページ>>

Kotlinの「文字列の連結と埋め込み」とは

この章ではKotlinにおける「文字列の連結と埋め込み」の意味や使い方を学習します。用語の解説が不要な方はここをクリックして練習問題へ飛びましょう。




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

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

文字列の連結とは?

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

Kotlinでは、+演算子を使用して簡単に文字列を結合することができます。これは初心者にも分かりやすく、幅広く利用されています。

fun main() {
    val part1 = "Hello"
    val part2 = "world"
    val greeting = part1 + ", " + part2 + "!" //2つの変数と2つの文字列を連結
    println(greeting) // 出力: Hello, world!
}
  • +演算子は簡単ですが、複数の文字列を結合するときに読みやすいコードを書くことが重要です。
  • 文字列を連結する順序に注意しましょう。

文字列の埋め込みとは?

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

テンプレートは${}の形式で記述され、埋め込む内容がそのまま評価されます。この方法を使えば、可読性の高いコードを書くことができます。

fun main() {
    val name = "Alice"
    val age = 25
    println("Hello, $name! You are $age years old.")
    
    // 式を埋め込む例
    val length = 5
    val width = 10
    println("The area of the rectangle is ${length * width}.")
}
  • ${}は変数だけでなく、計算式や関数の結果も埋め込むことが可能です。
  • 単純な変数の場合は${}を省略しても動作しますが、式の場合は必須です。

注意点とヒント

埋め込みの書式に注意
埋め込み時に${}を忘れたり、複雑な式を書く際に中括弧を省略するとエラーが発生します。

val name = "Bob"
println("Hello, ${name.toUpperCase()}!") // 正しい書き方

可読性を優先
長い文字列を連結する際や複雑なテンプレートを使用する場合、コードが読みにくくならないよう工夫しましょう。

まとめ

Kotlinの文字列の連結と埋め込みは、データを効率よく操作するために不可欠なスキルです。

+演算子と${}テンプレートを使い分けることで、簡潔かつ読みやすいコードが書けるようになります。

この基礎をしっかり理解することで、次の文字列操作の応用へと進む準備が整います。

文字列の連結と埋め込みの練習問題

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

このプログラムでは文字列の埋め込みと連結を利用して、入力内容を活用した動的なメッセージを生成します。

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

この問題の要件

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

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

ただし、以下のような実行結果となるコードを書くこと。

*****↓↓正解コードの実行結果の例↓↓*****

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

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

この問題を解くヒント

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

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

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

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

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

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

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

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

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

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

    // 文字列連結の例
    /*
    【穴埋め問題3】ここで"Kotlin" + "を" + "学ぼう!"のように文字列を連結し、変数exampleに代入するコードを書いてください。
    */
    println("連結例: $example") // 連結された文字列を出力
}

以上がこの問題の穴埋めコードです。

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



練習問題の解答と解説

この問題の一つの正解例とそのコードの解説を以下に示します。

正解コードの例

例えば以下のようなプログラムが考えられます。

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

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

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

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

    // 文字列連結の例
    val example = "Kotlin" + "を" + "学ぼう!"
    println("連結例: $example") // 連結された文字列を出力
}

正解コードの解説

今回のコードでは「名前」と「年齢」の入力を基に文字列の連結や埋め込みを使用してメッセージを生成する方法を学びます。

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

メイン関数の開始

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)

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

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

文字列の連結

val example = "Kotlin" + "を" + "学ぼう!"
println("連結例: $example")
  • 複数の文字列を連結して新しい文字列を作成します。
  • この例では、「Kotlinを学ぼう!」という文字列が作成されます。

まとめ

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

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

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

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

<<前のページ Kotlin記事一覧 次のページ>>

この記事への質問・コメント

この記事を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    Kotlinのテキスト&問題集トップへ戻る
    トップページへ戻る