Kotlin練習問題1-6:配列を使った基本的なリスト操作

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

Kotlinの初心者向け問題1-6:配列を使った基本的なリスト操作

この問題を解くために必要な知識:
コメントの書き方、変数と定数、基本データ型、算術演算と論理演算、入力と出力、import文、配列、分岐処理(if、if~else、when)、繰り返し処理(for、while、do~while)、Null安全、スマートキャスト

<<前の問題 問題集Top 次の問題>>

Kotlin練習問題1-6_配列を使った基本的なリスト操作





配列を使用した簡単なリスト操作を行うプログラムを作成しましょう。

ユーザーから数値を入力してもらい、その数値を配列に格納します。その後 特定の数値の検索、表示、および削除を行えるようにします。

この問題の要件

以下の要件に従ってプログラムを作成してください。

  • 配列の作成: 長さ10の整数配列 numbers を作成し、ユーザーからの入力を格納します。
  • ユーザー入力: ユーザーに10個の整数を入力してもらい、それらを配列に格納してください。無効な入力があった場合には、その旨をユーザーに伝え、プログラムを終了します。
  • 配列の内容表示: 配列に格納された全ての整数を表示します。
  • 検索機能: 配列の中に特定の整数が含まれているかを確認し、含まれていればその整数を削除し、更新された配列を表示します。含まれていなければ、その旨をユーザーに伝えてください。

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

----- ↓出力される結果の例↓ -----

10個の整数を入力してください:
1番目の整数を入力: 10
2番目の整数を入力: 20
3番目の整数を入力: 30
4番目の整数を入力: 40
5番目の整数を入力: 50
6番目の整数を入力: 60
7番目の整数を入力: 70
8番目の整数を入力: 80
9番目の整数を入力: 90
10番目の整数を入力: 100
配列の内容: 10 20 30 40 50 60 70 80 90 100
検索する数値を入力してください: 50
50 は配列に含まれています。削除します。
更新された配列の内容: 10 20 30 40 60 70 80 90 100

----- ↑出力される結果の例↑ -----

この問題を解くヒント

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

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

正解のコードは上から順に以下のような構成となっています。

1.main関数の定義
 1-1. 配列 numbers の作成
 1-2. ユーザーからの入力を numbers 配列に格納
  1-2-1. ユーザーから10個の整数を順番に入力
  1-2-2. ユーザーが入力した整数を numbers 配列に格納
  1-2-3. 無効な入力があった場合の処理
 1-3. 配列 numbers の内容を表示
 1-4. 配列に特定の数値が含まれているかを確認
  1-4-1. ユーザーから検索する数値を入力
  1-4-2. 検索する数値が numbers 配列に含まれているかを確認
   1-4-2-1. 含まれている場合、該当の数値を numbers 配列から削除
   1-4-2-2. 更新された配列の内容を表示
   1-4-2-3. 含まれていない場合、その旨を表示
 1-5. プログラム終了メッセージの表示

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

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

fun main() {
    // 配列を作成してユーザーからの入力を格納する

    /* 【穴埋め問題1】
    ここに長さ10の整数配列を作成するコードを書いてください。
    */

    // ユーザーから10個の整数を入力してもらう
    println("10個の整数を入力してください:")

    /* 【穴埋め問題2】
    ここにforループを使って、配列にユーザーからの入力を格納するコードを書いてください。
    */

    // 配列の内容を表示する
    print("配列の内容: ")

    /* 【穴埋め問題3】
    ここにforループを使って、配列内の数値を表示するコードを書いてください。
    */

    println()

    // 配列に特定の数値が含まれているかを確認する
    print("検索する数値を入力してください: ")
    val searchNum = readLine()?.toIntOrNull() ?: run {
        println("有効な整数を入力してください。")
        return
    }

    if (numbers.contains(searchNum)) {
        println("$searchNum は配列に含まれています。削除します。")

        // 配列から数値を削除する
        val newNumbers = numbers.filter { it != searchNum }.toIntArray()

        // 更新された配列の内容を表示する
        print("更新された配列の内容: ")
        for (num in newNumbers) {
            print("$num ")
        }
        println()
    } else {
        println("$searchNum は配列に含まれていません。")
    }

    println("プログラムを終了します。")
}

 

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

解答例

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

正解コードの例

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

********************

fun main() {
    // 配列を作成してユーザーからの入力を格納する
    val numbers = IntArray(10)

    // ユーザーから10個の整数を入力してもらう
    println("10個の整数を入力してください:")
    for (i in numbers.indices) {
        print("${i + 1}番目の整数を入力: ")
        val input = readLine()
        numbers[i] = input?.toIntOrNull() ?: run {
            println("有効な整数を入力してください。")
            return
        }
    }

    // 配列の内容を表示する
    print("配列の内容: ")
    for (num in numbers) {
        print("$num ")
    }
    println()

    // 配列に特定の数値が含まれているかを確認する
    print("検索する数値を入力してください: ")
    val searchInput = readLine()
    val searchNum = searchInput?.toIntOrNull() ?: run {
        println("有効な整数を入力してください。")
        return
    }

    if (numbers.contains(searchNum)) {
        println("$searchNum は配列に含まれています。削除します。")

        // 配列から数値を削除する
        val newNumbers = numbers.filter { it != searchNum }.toIntArray()

        // 更新された配列の内容を表示する
        print("更新された配列の内容: ")
        for (num in newNumbers) {
            print("$num ")
        }
        println()
    } else {
        println("$searchNum は配列に含まれていません。")
    }

    println("プログラムを終了します。")
}

********************

正解コードの解説

main 関数の定義

fun main() {

main 関数は、Kotlinプログラムが実行を開始するエントリーポイントです。この関数の中に、プログラムが実行する全てのコードが含まれます。

配列の作成と初期化

val numbers = IntArray(10)

IntArray(10) は、10個の整数を格納できる配列を作成します。val キーワードは、numbers が変更できない変数であることを示しています(定数として扱います)。

ユーザー入力を受け取るループ

for (i in numbers.indices) {
    print("${i + 1}番目の整数を入力: ")
    val input = readLine()
    numbers[i] = input?.toIntOrNull() ?: run {
        println("有効な整数を入力してください。")
        return
    }
}

この部分では、ユーザーに10個の整数を順番に入力してもらい、その値を配列 numbers に格納しています。

readLine() は、ユーザーからの入力を文字列として読み取る関数です。

また、toIntOrNull() は、入力された文字列を整数に変換し、失敗した場合は null を返します。?: 演算子は、null の場合に代替処理を行うために使われています。

配列の内容を表示

print("配列の内容: ")
for (num in numbers) {
    print("$num ")
}
println()

ここでは、for ループを使って配列の全ての要素を表示しています。$num は、num という変数の値を文字列として出力するために使われます。

配列内の値を検索

print("検索する数値を入力してください: ")
val searchNum = readLine()?.toIntOrNull() ?: run {
    println("有効な整数を入力してください。")
    return
}

ユーザーに配列内で検索したい数値を入力してもらい、それを整数に変換して searchNum に格納します。

検索結果に基づく処理

if (numbers.contains(searchNum)) {
    println("$searchNum は配列に含まれています。削除します。")

    val newNumbers = numbers.filter { it != searchNum }.toIntArray()

    print("更新された配列の内容: ")
    for (num in newNumbers) {
        print("$num ")
    }
    println()
} else {
    println("$searchNum は配列に含まれていません。")
}

ここでは、if 文を使って、searchNum が配列 numbers に含まれているかどうかを確認します。

含まれている場合、その値を削除し、更新された配列を表示します。filter 関数は、条件に一致しない要素のみを含む新しい配列を作成します。

<<前の問題 問題集Top 次の問題>>

この問題への質問・コメント

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

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






    Kotlin練習問題集へ戻る
    トップページへ戻る