需要設立 一個 變數 代表循環中的值 , 例如下面的 i , "in" keyword 代表 變數 在這個循環的範圍
i in 1..3 , 代表 i 在 for 循環依序(每次循環會是 上一次加一)會是 1 到 3
fun main() {
for (i in 1..3) {
println(i)
}
}
// result:
// 1
// 2
// 3
在java 中會這樣表示
i 的起點會從 0 開始循環 , i<=3 也就是說 i 最大只會是3 , i = i+1 相當於調控 step , 如果是 i = i + 2 一次跨兩步
void main() {
for (i int i=0; i<=3; i=i+1) {
println(i)
}
}
i in 6 downTo 0 , 代表 i 在 for 循環倒序(每次循環會是 上一次減一)會是 6 到 0
fun main() {
for (i in 6 downTo 0 ) {
println(i)
}
}
// result :
// 6
// 5
// 4
// 3
// 2
// 1
// 0
在java 中會這樣表示
i 的起點會從 6 開始循環 , i>=0 也就是說 i 最小只會是0 , i=i-1 也就是一次遞減一
void main() {
for (i int i=6; i>=0; i=i-1) {
println(i)
}
}
fun main() {
for (i in 0 until 10 ) {
println(i)
}
}
在java 中會這樣表示
i 的起點會從 0 開始循環 , i< 10 也就是說 i 最大只會是9 ,不能超過 10 , i=i+1 也就是一次加一
仔細比較這個 until java 中的表示方法 , 和 .. java 中的表示方法 , 明白差別 1 until 10 最大值會 < 10 而
而 1.. 10 最大值會 <= 10
void main() {
for (i int i= 0; i< 10; i=i+1) {
println(i)
}
}
step 後面的數字 如果搭配倒序(down to) , 會是遞減的數值 ; 後面的數字 如果搭配順序(until / ..) , 會是遞增的數值
fun main() {
for (i in 0 ..6 step 2) {
println(i)
}
}
在java 中會這樣表示
void main() {
for (i int i= 0; i<= 6; i=i+2) {
println(i)
}
}
fun main() {
for (i in 0 until 6 step 2) {
println(i)
}
}
在java 中會這樣表示
void main() {
for (i int i= 0; i<6; i=i+2) {
println(i)
}
}
fun main() {
for (i in 6 downTo 0 step 2) {
println(i)
}
}
在java 中會這樣表示
void main() {
for (i int i= 6; i>= 0; i=i-2) {
println(i)
}
}
while 循環 簡單說一句話, 如果條件達成 會執行到系統掛掉為止, 也就是說他會一直會無止盡跑下去
這點很重要, 之前我就有錯用過 , 讓手機 App 執行到這裡就當機 XDD,所以請小心使用
所以訂定條件時要注意會不會一直循環下去
i = i + 1 每執行一次循環 i 的值 會執行 +1 , 直到 i > 5 條件不符合就會停止迴圈
// Program to print line 5 times
fun main(args: Array<String>) {
var i = 1
while (i <= 5) {
println("Line $i")
i = i + 1
}
// result:
// Line 1
// Line 2
// Line 3
// Line 4
// Line 5
}
如果 沒有 i = i + 1 , i 永遠都 <= 5 , 循環就會無止盡跑下去
// Program to print line 5 times
fun main(args: Array<String>) {
var i = 1
while (i <= 5) {
println("Line $i")
}
}
do while 循環 和 while 的差別在於, while 是先檢查條件是否成立,成立才執行下面的指令,而 do-while 是先執行那些指令,再去檢查條件是否成立。
下面範例 while 會判斷i 是不是 <= 5 如果條件達成 才會 println("Line $i") , 進行{} 內的程式碼
所以 不會 打印出 任何內容
// Program to print line 5 times
fun main(args: Array<String>) {
var i = 6
while (i <= 5) {
println("Line $i")
i = i + 1
}
}
下面範例 do while 會執行 println("Line $i") 再去檢查 i 是不是 <= 5
所以 至少 會打印出 Line 6
// Program to print line 5 times
fun main(args: Array<String>) {
var i = 6
do{
println("Line $i")
i = i + 1
}
while (i <= 5)
}
// result:
// Line 6
不論是 i++ 或是 ++i 都是 i = i+1 的簡化版
但兩個還是有差別 , 如下面所示
兩者A與B的輸出均是3
但只要我們是以表示式來使用,效果就不一樣了。
fun main(){
var A=2;
var B=2;
A++;
++B;
println("A=$A B= $B ");
}
// result:
// A=3 B= 3
A++:意思是先把A放到C,再執行A=A+1 的動作。
因為A先放到C,所以C的值會是2
++B:意思是先再執行B=B+1,再把B放到D。
因為B會先執行B=B+1的動作,所以D的值會是3
fun main(){
var A=2;
var B=2;
val C = A++
val D = ++B
println("C=$C D= $D ");
}
// result:
//C=2 D= 3