Kotlinの初心者向け問題1-2:配列の平均値を計算しよう
この問題を解くために必要な知識:
コメントの書き方、変数と定数、基本データ型、算術演算と論理演算、入力と出力、import文、配列、分岐処理(if、if~else、when)、繰り返し処理(for、while、do~while)、Null安全、スマートキャスト
<<前の問題 | 問題集Top |
次の問題>> |
Kotlinの文法「配列」とは
ここでは配列の意味や使い方を復習します。必要ない方はここをクリックして練習問題へ飛びましょう。
配列は、複数の値を一つの変数にまとめて扱うための便利な仕組みです。
この記事では、Kotlinの配列について詳しく説明し、基本的な使い方や配列操作の方法を学びます。
配列とは?
配列とは、同じデータ型の値を連続して並べたデータ構造のことです。例えば、複数の整数や文字列を一つの変数にまとめて扱いたい場合に配列を使います。
配列の要素にはインデックス(番号)でアクセスします。インデックスは0から始まるので、最初の要素はインデックス0
、2番目は1
となります。
Kotlinでの配列の宣言
Kotlinで配列を作成するには、arrayOf
関数を使います。以下は、いくつかの配列の例です。
例: 配列の宣言
fun main() { // 整数の配列 val numbers = arrayOf(1, 2, 3, 4, 5) // 文字列の配列 val names = arrayOf("Alice", "Bob", "Charlie") // 各要素の表示 println(numbers[0]) // 出力: 1 println(names) // 出力: Bob }
この例では、numbers
は整数の配列、names
は文字列の配列です。
println
を使って、インデックスを指定して特定の要素にアクセスしています。
配列の操作
要素の変更
配列の要素を変更するには、インデックスを使って直接指定します。
fun main() { val fruits = arrayOf("Apple", "Banana", "Cherry") // 2番目の要素を変更 fruits= "Orange" println(fruits ) // 出力: Orange }
このように、インデックスを使うことで、配列内の任意の要素を変更することができます。
配列のサイズ
Kotlinの配列は固定サイズです。つまり、作成後にサイズを変更することはできませんが、別の配列を作り直すことで対応できます。
fun main() { val numbers = arrayOf(1, 2, 3, 4, 5) // 配列のサイズを確認 println("配列のサイズ: ${numbers.size}") // 出力: 配列のサイズ: 5 }
便利な配列操作
Kotlinでは、配列に対する便利な操作が多数提供されています。ここでは、いくつかよく使われる操作方法を紹介します。
forループを使った配列の走査
配列内の要素を一つずつ処理する場合、for
ループが便利です。
fun main() { val animals = arrayOf("Cat", "Dog", "Elephant") // 配列の要素を順番に出力 for (animal in animals) { println(animal) } }
このループでは、配列の各要素がanimal
に代入され、順番に出力されています。
配列のソート
Kotlinでは、配列を簡単にソートすることができます。
fun main() { val numbers = arrayOf(5, 3, 8, 1, 2) // 配列を昇順にソート val sortedNumbers = numbers.sortedArray() // ソート後の配列を表示 println(sortedNumbers.joinToString()) // 出力: 1, 2, 3, 5, 8 }
この例では、sortedArray
を使って配列を昇順にソートし、joinToString
で要素をカンマ区切りで出力しています。
配列の初期化方法
配列はarrayOf
以外にも、特定の値やサイズで初期化することができます。
特定のサイズで初期化
fun main() { // サイズが5の配列を0で初期化 val zeros = Array(5) { 0 } // 配列の要素を表示 println(zeros.joinToString()) // 出力: 0, 0, 0, 0, 0 }
この例では、サイズ5の配列をすべて0で初期化しています。
Array
コンストラクタにサイズと初期値を指定することで、好きな値で配列を初期化できます。
まとめ
Kotlinの配列は、複数の値をまとめて管理できる非常に便利なデータ構造です。
基本的な操作や便利なメソッドを覚えることで、配列を効果的に使えるようになります。
今回紹介した基本的な配列の使い方をぜひ自分でコードを書きながら練習してみてください。
Kotlin練習問題1-2_配列の平均値を計算しよう
配列の平均値を計算しましょう。
5つの整数(10 , 20 , 30 , 40 , 50)を含む配列を作成し、それらの平均値を計算して出力するプログラムを作成してください。
この問題の要件
以下の要件に従ってプログラムを作成してください。
- 5つの整数を含む配列を作成してください。配列の名前は
numbers
とすること。 - 配列内の全要素を順に足し合わせ、合計を求めてください。
- 合計を求めた後、配列の要素数で割って平均値を計算し、
average
という変数に格納してください。 - 平均値を
println
を使って出力してください。出力される文字列は「平均値: 」で始まるようにしてください。
ただし、以下のような実行結果となること。
----- ↓出力される結果の例↓ -----
平均値: 30.0
----- ↑出力される結果の例↑ -----
この問題を解くヒント
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
正解のコードは上から順に以下のような構成となっています。
1.main関数の定義
1-1. 配列numbersを定義し、5つの整数を格納
1-2. 変数sumを定義し、初期化
2.forループによる配列の要素を順に足し合わせる処理
2-1. ループ内で各要素をsumに加算
3.平均値の計算
3-1. sumを配列の要素数で割り、averageに格納
4.計算結果の出力
4-1. averageを出力
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
fun main() { val numbers = arrayOf(10, 20, 30, 40, 50) // 5つの整数を含む配列を作成 var sum = 0 // 合計を格納する変数を初期化 // 配列の全要素を順に足し合わせる /* ***【穴埋め問題1】*** ここに配列`numbers`の各要素を`sum`に足し合わせるコードを書いてください。 */ // 平均値を計算(合計を要素数で割る) /* ***【穴埋め問題2】*** ここで`sum`を`numbers`の要素数で割り、平均値を計算して`average`に格納するコードを書いてください。 */ println("平均値: $average") // 平均値を出力 }
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
解答例
この問題の一つの正解例とそのコードの解説を以下に示します。
正解コードの例
例えば以下のようなプログラムが考えられます。
********************
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
という記述は、sum
にnumber
を加えるという意味です。
平均値の計算
val average = sum.toDouble() / numbers.size
ここでは、合計sum
を配列の要素数で割ることで平均値を計算しています。
sum.toDouble()
は、sum
を小数点を含む数値に変換することで、割り算の結果が小数になるようにしています。numbers.size
は配列の要素数を返します。
平均値の出力
println("平均値: $average")
最後に、計算された平均値をprintln
を使って出力します。出力は「平均値: 30.0」のようになります。
<<前の問題 |
問題集Top |
次の問題>> |
この問題への質問・コメント
この問題を作成するにあたりAIを活用しています。
問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。