Kotlin Tutorial(6)迴圈與範圍 << 前情
應用程式經常需要處理大量同樣型態的資料,例如計算一些年齡的平均。Kotlin提供陣列資料型態,可以宣告與建立固定元素個數的陣列變數,搭配迴圈處理陣列裡面的元素,很容易完成應用程式的需求。
基本資料型態陣列
如果應用程式需要數量比較多的資料,例如整數、小數、字元或邏輯資料,可以使用下面的型態宣告陣列變數:
- ByteArray
- ShortArray
- IntArray
- LongArray
- FloatArray
- DoubleArray
- CharArray
- BooleanArray
下面是宣告陣列變數的語法:
val <name>: xxxArray = xxxArray(<元素個數>)
// 可以省略型態的設定
val <name> = xxxArray(<元素個數>)
根據應用程式的需求,建立好陣列變數以後,Kotling會依照下面的說明,自動為每一個陣列的元素設定預設值:
- ByteArray、ShortArray、IntArray:0
- LongArray:0L
- FloatArray:0.0F
- DoubleArray:0.0
- CharArray:編碼為0的字元
- BooleanArray:false
下面的程式片段示範建立陣列與設定元素值的作法:
// 宣告與建立有三個元素的Int陣列
val ages: IntArray = IntArray(3)
// 設定元素值,第一個元素的編號是0
ages[0] = 35
ages[1] = 12
ages[2] = 27
使用迴圈處理陣列元素
建立與設定好的陣列變數,可以使用下面的for迴圈語法,依序處理所有陣列的元素:
for (<name> in <array>) {
...
}
下面的程式片段示範使用for迴圈顯示所有陣列元素的作法:
val ages: IntArray = IntArray(3)
...
// 使用for迴圈依序處理陣列所有元素
// 迴圈執行的次數就是元素個數
// 每執行一次都會把元素值指定給element變數
for (element in ages) {
println(element)
}
在處理陣列元素的時候,如果需要使用元素的編號,可以使用下面的for迴圈語法:
for (<index> in <array>.indices) {
...
}
下面的程式片段示範使用for迴圈顯示所有陣列元素編號與值的作法:
val ages: IntArray = IntArray(3)
...
// 陣列.indices:根據陣列的元素個數傳回範圍運算式
// ages.indices傳回0..2
for (i in ages.indices) {
println("[$i]: ${ages[i]}")
}
// 顯示:
// [0]: 35
// [1]: 12
// [2]: 27
在處理陣列元素的時候,如果同時需要使用元素的編號與元素值,可以使用下面的for迴圈語法:
for (<index, value> in <array>.withIndex()) {
...
}
下面的程式片段示範使用for迴圈顯示所有陣列元素編號與值的作法:
val ages: IntArray = IntArray(3)
...
// 陣列.withIndex():傳回元素編號與元素值成對的資料
// 搭配for迴圈使用這樣的語法:
// for ( (元素編號變數, 元素值變數) in 陣列.withIndex() ) ...
for ((i, v) in ages.withIndex()) {
println("[$i]: $v")
}
// 顯示:
// [0]: 35
// [1]: 12
// [2]: 27
瞭解陣列的基本用法以後,就可以使用下面的範例程式執行資料合計與平均的工作:
/* net.macdidi5.kotlin.tutorial.ch07.HelloIntArray02.kt */
package net.macdidi5.kotlin.tutorial.ch07
fun main(args: Array<String>) {
// 宣告與建立有三個元素的Int陣列
val ages: IntArray = IntArray(3)
// 設定元素值,第一個元素的編號是0
ages[0] = 35
ages[1] = 17
ages[2] = 24
// 宣告合計用的變數
var total = 0
// 使用迴圈執行所有元素的合計
for (age in ages) {
total += age
}
// 陣列.size:陣列的元素個數
// 計算平均
val average = total / ages.size
println("Total: $total, Average: $average")
// 顯示: Total: 76, Average: 25
}
建立包含元素資料的陣列
如果應用程式需要的陣列變數,在元素個數不多而且元素值都是已知的情況,可以使用下面的函式,直接建立包含元素資料的陣列:
- byteArrayOf(Int,…)
- shortArrayOf(Int,…)
- intArrayOf(Int,…)
- longArrayOf(Long,…)
- floatArrayOf(Float,…)
- doubleArrayOf(Double,…)
- charArrayOf(Char,…)
- booleanArrayOf(Boolean,…)
下面的範例程式示範建立包含元素資料陣列的作法:
/* net.macdidi5.kotlin.tutorial.ch07.HelloIntArray03.kt */
package net.macdidi5.kotlin.tutorial.ch07
fun main(args: Array<String>) {
// 在intArrayOf函式裡面設定所有陣列的元素
val ages = intArrayOf(35, 17, 24)
// 宣告合計用的變數
var total = 0
// 使用迴圈執行所有元素的合計
for (age in ages) {
total += age
}
// 計算平均
val average = total / ages.size
println("Total: $total, Average: $average")
// 顯示: Total: 76, Average: 25
}
字串陣列
如果應用程式需要數量比較多的字串資料,可以使用下面的語法建立字串陣列:
val <name>: Array<String?> = arrayOfNulls<String>(<元素個數>)
val <name> = arrayOfNulls<String>(<元素個數>)
val <name>: Array<String?> = arrayOfNulls(<元素個數>)
使用上面語法建立的字串陣列,所有元素的預設值為「null」,表示並沒有字串物件。下面的範例程式示範建立與使用字串陣列的作法:
/* net.macdidi5.kotlin.tutorial.ch07.HelloStringArray01.kt */
package net.macdidi5.kotlin.tutorial.ch07
fun main(args: Array<String>) {
// 宣告與建立有三個元素的String陣列
val names: Array<String?> = arrayOfNulls<String>(3)
// 可以省略型態
//val names = arrayOfNulls<String>(3)
// 如果要使用型態,就可以省略arrayOfNulls後面的<String>
//val names: Array<String?> = arrayOfNulls(3)
// 設定元素值,第一個元素的編號是0
names[0] = "Simon"
names[1] = "Mary"
names[2] = "Sam"
// 使用for迴圈依序處理陣列所有元素
// 迴圈執行的次數就是元素個數
// 每執行一次都會把元素值指定給element變數
for (element in names) {
println(element)
}
// 顯示:
// Simon
// Mary
// Sam
println()
// 陣列.indices:根據陣列的元素個數傳回範圍運算式
// ages.indices傳回0..2
for (i in names.indices) {
println("[$i]: ${names[i]}")
}
// 顯示:
// [0]: Simon
// [1]: Mary
// [2]: Sam
println()
// 陣列.withIndex():傳回元素編號與元素值成對的資料
// 搭配for迴圈使用這樣的語法:
// for ( (元素編號變數, 元素值變數) in 陣列.withIndex() ) ...
for ((i, v) in names.withIndex()) {
println("[$i]: $v")
}
// 顯示:
// [0]: Simon
// [1]: Mary
// [2]: Sam
}
如果應用程式需要的字串陣列變數,在元素個數不多而且元素值都是已知的情況,可以使用下面的函式,直接建立包含元素資料的字串陣列:
val <name>: Array<String> = arrayOf<String>(String,...)
val <name>: Array<String> = arrayOf(String,...)
val <name> = arrayOf<String>(String,...)
val <name> = arrayOf(String,...)
下面的範例程式示範建立包含字串元素資料陣列的作法:
/* net.macdidi5.kotlin.tutorial.ch07.HelloStringArray02.kt */
package net.macdidi5.kotlin.tutorial.ch07
fun main(args: Array<String>) {
// 宣告與建立有三個元素的String陣列
val names = arrayOf("Simon", "Mary", "Sam")
for (element in names) {
println("Hello!, ${element.toUpperCase()}!")
}
// 顯示:
// Hello!, SIMON!
// Hello!, MARY!
// Hello!, SAM!
}
下一步
在瞭解陣列變數以後,接下來要說明字串物件變數的宣告、建立與使用。
相關的檔案都可以在GitHub瀏覽與下載。
http://github.com/macdidi5/Kotlin-Tutorial
後續 >> Kotlin Tutorial(8)字串
|
Pitar Tang
07/22
大大你好 請問有關Kotlin Tutorial系列還會更新嗎
真的很詳細很捧