# Kotlin - for 迴圈
###### tags: `Tag(Kotlin 筆記)`
[TOC]
## 陣列的宣告
* 一般宣告型態方式
```clike=
var array: IntArray = intArrayOf(1, 2, 3)
```
* 不需要宣告型態了, 因為後面都已經把型態標示出來, 就可以節省一些資訊。
```clike=
var array = intArrayOf(1,2,3)
```
* 宣告各種型態的陣列
```clike=
var iArray = intArrayOf(1, 2, 3)
var fArray = floatArrayOf(1.0f, 2.0f, 3.0f)
var bArray = booleanArrayOf(true, false, true)
var cArray = charArrayOf('a', 'b', 'c')
```
* 透過建構子傳入想要傳入的個數
```clike=
var iArray = IntArray(3)
iArray[0] = 4
iArray[1] = 1
iArray[2] = 7
```
* 字串陣列,不是 stringArrayOf 宣告, 須透過 arrayOf 這個方法來進行宣告
```clike=
var sArray = arrayOf("abc", "def", "ght")
```
---
## for 迴圈取得整個陣列全部值
### item > for(item in xxxArray)
```clike=
var iArray = intArrayOf(1, 2, 3)
var sArray = arrayOf("abc", "def", "ght")
for(item in iArray){
print("$item ")
}
結果:1 2 3
for(item in sArray){
print("$item ")
}
結果:abc def ght
```
## for 迴圈取得索引值
### indices > for (i in xxxArray.indices)
```clike=
for (i in iArray.indices) {
println("${iArray[i]}")
}
```
* array 的 indices 方法就是拿出索引值
透過存取 ==${xxxArray[i]}== 來存取到陣列內的值
* 為什麼大括弧來包覆呢?
因為它必須透過 xxxArray 的 index 去存取值, 屬於運算的部分, 因此==須透過大括弧包覆才能取到值==, 否則只會取到 iArray[i] 所對應的位址而已。
## for 迴圈範圍運算
### for(i in 1..100)
透過範圍運算來達到指定數量
==迴圈從1跑到100的累加==, 那麼就可以透過範圍運算式達成
```clike=
var sum = 0
for(i in 1..100){
sum += i
}
print("sum is $sum")
結果:sum is 5050
```
### step > for(i in 2..10 step 2)
設定 step 屬性, 每圈+2,==迴圈從2開始,每次+2跑到10的累加==
,就是 2+4+6+8+10 的結果
```clike=
var sum = 0
for(i in 2..10 step 2){
sum += i
}
print("sum is $sum")
結果:sum is 30
```
### downTo > for(i in 10 downTo 2 step 2)
用來倒數, 就是說一開始是 1 到 10, 用了 downTo 屬性就會變成 10 到 1。
```clike=
for(i in 10 downTo 2 step 2){
print("$i ")
}
結果: 10 8 6 4 2
```
### until > for(item in 1 until 10)
用來指定到那個位置,就是說一開始是 1 到 10, 用了 until 屬性就會變成 1 到 9。
```clike=
for(item in 1 until 10){
print("$item ")
}
結果: 1 2 3 4 5 6 7 8 9
```