【Kotlin】レッスン4-1:配列の使い方を学ぼう|宣言・操作・初期化の基礎

ながみえ

一つ前の章では、6つの解説記事を通してKotlinの 関数 について学習しました。

ここからは コレクション について順番に見ていきましょう。今回は 配列 を学習します。

Lesson1:基礎文法編
Lesson2:制御構造編
Lesson3:関数編
Lesson4:コレクション編

 ・Lesson4-1:配列を理解しよう ◁今回はココ
 ・Lesson4-2:Listを理解しよう
 ・Lesson4-3:Setを理解しよう
 ・Lesson4-4:Mapを理解しよう
 ・Lesson4-5:コレクションを使いこなそう
 ・Lesson4-6:コレクションとジェネリクスを組み合わせよう
 ・確認問題4-☆1:ナインゲームを作ろう
 ・確認問題4-☆2:アラビア数字をローマ数字に変換しよう
 ・確認問題4-☆3:宝探しゲームを作ろう
Lesson5:オブジェクト指向編

<<前のページ

学習記事一覧

次のページ>>

配列とは?|宣言・要素アクセス・サイズ取得

プログラミングで複数のデータをまとめて扱いたいとき、「配列(Array)」の知識は欠かせません。

Kotlinでも配列を使うことで、同じ型のデータを効率良く管理したり、繰り返し処理を簡単に行うことができます。

この記事では、Kotlinにおける配列の基本的な使い方や特徴を分かりやすく解説します。

配列の操作方法を身につければ、複数のデータを自在に扱うアプリケーション開発がグッと身近になります。

配列の解説と作り方|ArrayOf関数を使おう

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

例えば、1から9までの9個の数値データがあったとします。

これらのデータを扱う際、これまで学習してきた内容だと9個の定数を用意し、一つずつ代入していかないといけません。

しかし配列を使うと、9個のデータを全て一つの定数に格納することができます。

(1, 2, 3, 4, 5, 6, 7, 8, 9) ← これを丸ごと1つの変数/定数に代入

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

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の要素を出力:1
    println(names[1])    // 定数nameのインデックス1の要素を出力:Bob
}

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

1
Bob

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

「数値と文字列」のような異なる型が含まれる配列を作ることはできません。

配列要素の変更方法 と 配列サイズの変更不可性について

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

インデックス指定による要素の変更

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

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

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

1度決めた配列のサイズは変更できない

配列に含まれる要素の数は、後から変更することはできません。

どうしても変更が必要な場合は別の配列を作り直すこか、次のレッスンで紹介する List を使用する必要があります。

また作成済みの配列のサイズを確認するには sizeプロパティ を使用します。

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

Arrayコンストラクタによる配列の初期化|値・サイズを指定して生成

arrayOf関数以外の配列作成方法として、Arrayコンストラクタ を用いて特定の値やサイズで初期化することができます。

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

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

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

※ コンストラクタという言葉の意味については、Lesson5-2以降で詳しく学習します。

配列の操作方法|ループ処理とソート方法

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

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

forループを使った配列の操作

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

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

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

Cat
Dog
Elephant

配列のソートと出力

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)としても正しく出力されないため注意しましょう。

まとめ|配列の基本をマスターしよう

この記事では、Kotlinにおける配列の基本的な使い方について解説しました。

配列は複数のデータをまとめて管理できる便利なコレクションです。

今後のレッスンでは、配列の基本操作を繰り返しながら、リストや他のコレクションとの違いも意識して使っていくと、より柔軟なプログラミングができるようになります。

実際に手を動かして、配列を身につけていきましょう!

配列の練習問題|配列内データの平均値を求めよう

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

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

この問題の要件

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

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

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

平均値: 30.0

この問題を解くヒント

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

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

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

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

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

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

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

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

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

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

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

この問題の解答と解説

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

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

Q
正解コード
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") // 平均値を出力
}
Q
正解コードの解説

コードをブロックごとに分割して解説します。

配列の定義と初期化

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」のようになります。

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

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

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

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

<<前のページ

学習記事一覧

次のページ>>

記事URLをコピーしました