반복문에는 for 와 while 두 가지가 있다.
for in .. : 일반적인 형태의 for 반복문
for(변수 in 시작값..종료값) {
// 실행 코드
}
마지막 숫자 제외하기
for(변수 in 시작값 until 종료값) {
// 실행 코드
}
var array = arrayOf("JAN","FEB","MAR","APR","MAY","JUN")
for(index in 0 until array.size) {
Log.d("For","현재 월은 ${array.get(index)}입니다.")
}
배열의 인덱스가 0부터 시작하기 때문에 배열의 크기는 항상 '마지막 인덱스 + 1의 값' 이다. 따라서 반복을 할 때 배열의 크기 바로 전까지만 반복해야 한다.
step: 건너뛰기
for(변수 in 시작값..종료값 step 3) {
// 실행 코드
}
downTo: 감소시키기
for(index in 10 downTo 0) {
Log.d("For" , "현재 숫자는 ${index}")
}
배열, 컬렉션에 들어 있는 엘리먼트 반복하기
for(변수 in 배열 또는 컬렉션) {
// 실행 코드
}
var arrayMonth = arrayOf("JAN","FEB","MAR","APR","MAY","JUN")
for(month in arrayMonth) {
Log.d("for" , "현재 월은 ${month} 입니다.")
}
일반적인 while 반복문
var current = 1
val until = 12
while(current < until) {
Log.d("while", "현재 값은 ${current}입니다.")
current = current + 1
}
이 while 문에는 current가 until보다 작을 때만 true를 반환하는 조건식이 입력되어 있다.
Do와 함께 사용하기
var game = 1
val match = 6
do{
Log.d("while", "${game}게임 이겼습니다. 우승까지 ${match-game}게임 남았습니다.")
game += 1
} while (game < match)
do 와 함께 사용하면 while문의 조건식과 관계없이 do 블록 안의 코드를 한 번 실행한다.
break : 반복문 탈출
for (index in 1..10) {
Log.d("break", "현재 index는 $index 입니다.")
if (index > 5) {
break
}
}
continue : 다음 반복문으로
for(except in 1..10) {
if(except > 3 && except < 8) {
continue
}
Log.d("continue", "현재 index는 $except 입니다.")
}
break문 처럼 완전히 벗어나지는 않고 다음 반복문의 조건에 따라 실행 여부가 결정된다.