【Kotlin】レッスン4-01:配列を理解しよう

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

この記事で学べる知識:配列

この記事の練習問題を解くために必要な知識:
基礎文法、制御構造、関数(レッスン1~3)配列ListSetMapコレクション操作コレクションとジェネリクス

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

Kotlinの文法「配列」とは

ここでは配列の意味や使い方を学習します。必要ない方はここをクリックして練習問題へ飛びましょう。




配列は複数の値を一つの変数にまとめて扱うための便利な仕組みです。

この記事ではKotlinの配列について詳しく説明し、基本的な使い方や配列操作の方法を学びます。

配列とは?

配列とは同じデータ型の値を連続して並べたデータ構造のことです。

例えば複数の整数や文字列を一つの変数にまとめて扱いたい場合に配列を使います。

配列の要素にはインデックス(番号)でアクセスします。インデックスは0から始まるので、最初の要素はインデックス0、2番目は1となります。

Kotlinでの配列の宣言

Kotlinで配列を作成するには、arrayOf関数を使います。いくつか以下は配列の例です。

例: 配列の宣言
fun main() {
    // 整数の配列
    val numbers = arrayOf(1, 2, 3, 4, 5) // 1から5の整数を含む配列を宣言し、定数numbersに代入

    // 文字列の配列
    val names = arrayOf("Alice", "Bob", "Charlie") // 3つの文字列を含む配列を宣言し、定数namesに代入

    // 各要素の表示
    println(numbers[ 0])  // 定数numbersのインデックス0の要素を出力
    println(names[ 1])    // 定数nameのインデックス1の要素を出力
}

このコードを実行すると以下のように出力されます。

1
Bob

この例ではnumbersは整数の配列、namesは文字列の配列です。

printlnを使ってインデックスを指定して特定の要素にアクセスしています。

配列の操作

一度宣言した配列を後から操作することもできます。

要素の変更

配列の要素を変更するには、インデックスを使って直接指定します。

fun main() {
    val fruits = arrayOf("Apple", "Banana", "Cherry") // 3つの文字列を含む配列を宣言
    
    fruits[ 1] = "Orange" // インデックス1(2番目の要素)にorangeを再格納
    
    println(fruits[ 1])  // 出力: Orange
}

このようにインデックスを使うことで、配列内の任意の要素を変更することができます。

配列のサイズ

Kotlinの配列のサイズ(要素の数)は固定です。

つまり作成後にサイズを変更することはできません。どうしても変更が必要な場合は別の配列を作り直すこか、次の記事で紹介するListを使用する必要があります。

またsizeプロパティを使用することで配列のサイズを確認することができます。

fun main() {
    val numbers = arrayOf(1, 2, 3, 4, 5) // サイズが5の配列を宣言
    
    // 配列のサイズを確認
    println("配列のサイズ: ${numbers.size}")  // 出力: 配列のサイズ: 5
}

便利な配列操作

Kotlinでは配列に対する便利な操作が多数提供されています。

ここではよく使われる操作方法をいくつか紹介します。

forループを使った配列の走査

配列内の要素を一つずつ処理する場合、forループが便利です。

fun main() {
    val animals = arrayOf("Cat", "Dog", "Elephant")
    
    for (animal in animals) { // 変数animalに定数animalsの中の配列を順番に代入
        println(animal)       // 配列の要素を順番に出力
    }
}

このループでは配列の各要素がanimalに代入され、順番に出力されています。

配列のソートと出力

KotlinではsortedArray()メソッドを使って簡単に配列のソートが可能です。

また、配列の要素ではなく配列全体を出力する際にはjoinToString()メソッドを使用します。

fun main() {
    val numbers = arrayOf(5, 3, 8, 1, 2)
    
    // 配列を昇順にソート
    val sortedNumbers = numbers.sortedArray() // sortedArray()メソッドを使ってnumbersをソート
    
    // ソート後の配列を表示
    println(sortedNumbers.joinToString())  // 出力: 1, 2, 3, 5, 8
}

この例ではsortedArrayを使って配列を昇順にソートし、joinToStringで要素をカンマ区切りで出力しています。

単純にprintln(numbers)としても正しく出力されないため注意しましょう。

配列の初期化方法

配列はarrayOf以外にも、特定の値やサイズで初期化することができます。

特定のサイズで初期化

fun main() {
    // サイズが5の配列を0で初期化
    val zeros = Array(5) { 0 }

    // 配列の要素を表示
    println(zeros.joinToString())  // 出力: 0, 0, 0, 0, 0
}

この例ではサイズ5の配列宣言し、要素をすべて0で初期化しています。

Arrayコンストラクタにサイズと初期値を指定することで、好きな値で配列を初期化できます。

まとめ

Kotlinの配列は複数の値をまとめて管理できる非常に便利なデータ構造です。

基本的な操作や便利なメソッドを覚えることで、配列を効果的に使えるようになります。

今回紹介した基本的な配列の使い方をぜひ自分でコードを書きながら練習してみてください。

配列の練習問題:配列の平均値を計算しよう

配列の平均値を計算しましょう。

5つの整数(10 , 20 , 30 , 40 , 50)を含む配列を作成し、それらの平均値を計算して出力するプログラムを作成してください。

この問題の要件

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

  • 5つの整数を含む配列を作成してください。配列の名前はnumbersとすること。
  • 配列内の全要素を順に足し合わせ、合計を求めてください。
  • 合計を求めた後、配列の要素数で割って平均値を計算し、averageという変数に格納してください。
  • 平均値をprintlnを使って出力してください。出力される文字列は「平均値: 」で始まるようにしてください。

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

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

平均値: 30.0

この問題を解くヒント

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

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

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

1:main関数の定義
  □ 配列numbersを作成し、5つの整数を格納
  □ 変数sumを初期値0で宣言
  □ for文を使用して配列numbersの要素を順に取得
  □ □ 取得した要素を変数sumに加算
  □ 変数averageを宣言し、sumを配列numbersのサイズで割り算して計算
  □ println関数で文字列とaverageを出力

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

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

fun main() {
    /* 【穴埋め問題1】
    ここに配列を作成し、5つの整数を格納するコードを書いてください。
    */
    
    /* 【穴埋め問題2】
    ここに合計を格納するための変数を初期化するコードを書いてください。
    */

    // 配列の全要素を順に足し合わせる
    for (number in /* 【穴埋め問題3】ここに配列の名前を記述してください */) {
        /* 【穴埋め問題4】
        配列の要素を合計に足し合わせるコードを書いてください。
        */
    }

    // 平均値を計算(合計を要素数で割る)
    /* 【穴埋め問題5】
    ここに平均値を計算して変数averageに格納するコードを書いてください。
    */

    /* 【穴埋め問題6】
    ここにprintln関数で平均値を出力するコードを書いてください。
    */
}

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

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

練習問題の解答と解説

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

正解コードの例

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

fun main() {
    val numbers = arrayOf(10, 20, 30, 40, 50) // 5つの整数を含む配列を作成
    var sum = 0 // 合計を格納する変数を初期化

    // 配列の全要素を順に足し合わせる
    for (number in numbers) {
        sum += number
    }

    // 平均値を計算(合計を要素数で割る)
    val average = sum.toDouble() / numbers.size
    println("平均値: $average") // 平均値を出力
}

正解コードの解説

このKotlinプログラムは配列に含まれる5つの整数の平均値を求めるシンプルな例です。

コードの各部分を解説します。

配列の定義と初期化

val numbers = arrayOf(10, 20, 30, 40, 50)

まずnumbersという名前の配列を定義しています。

arrayOfを使って配列内に5つの整数(10, 20, 30, 40, 50)を格納しています。この配列は後で計算に使用します。

合計値を格納する変数の初期化

var sum = 0

次にsumという名前の変数を0で初期化します。

この変数は配列内の全ての整数を足し合わせた合計を格納するために使用します。

配列内の要素を順に足し合わせる

for (number in numbers) {
    sum += number
}

この部分ではforループを使用して、配列numbersの各要素を順にsumに足し合わせています。

numberは配列内の各整数を指し示し、sum += numberという記述はsumnumberを加えるという意味です。

平均値の計算

val average = sum.toDouble() / numbers.size

ここでは合計sumを配列の要素数で割ることで平均値を計算しています。

sum.toDouble()は、sumを小数点を含む数値に変換することで、割り算の結果が小数になるようにしています。

numbers.sizeは配列の要素数を返します。

平均値の出力

println("平均値: $average")

最後に計算された平均値をprintlnを使って出力します。

出力は「平均値: 30.0」のようになります。

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

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

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

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






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