복잡한 조건에 따라 반복을 제어하고, 분기를 실행해야 하는 경우에 많이 사용
흐름제어에서 사용되는 키워드
return : 함수 종료, 값을 반환
break : 반복문 내의 구문이 실행되는 중간에 즉시 반복문 종료 후 다음 반복문으로 넘어감
continue : 다음 반복 조건으로 즉시 넘어감
fun main(){
for (i in 1..10){
if(i == 3) break
print(i)
}
}
//3에서 반복문이 끝나기 때문에 12 출력
fun main(){
for (i in 1..10){
if(i == 3) continue
print(i)
}
} //3일때 다음 반복 조건문으로 바로 넘어가기에 3을 제외한 1..10 이 모두 출력됨
기존 언어에서는 다중 반복문 수행 시 내부에 있는 반복문을 break를 통해 종료 하더라고 외부에서 한 번 더 break를 사용해서 수동으로 종료 해야 했지만,
코틀린에서는 외부 반복문에 레이블 이름과 @기호를 달고, break 문에서 @과 레이블 이름을 달아주면 레이블이 달린 반복문을 기준으로 즉시 break를 시켜준다. continue의 경우도 동일하다.
fun main(){
//레이블 이름 -> loop
loop@for(i in 1..10){
for(j in 1..10){
if(i == 1 && j==2) break@loop
println("i : $i, j : $j")
}
}
}
//출력결과
// i : 1, j : 1
fun main(){
println(true && false)
println(true || false)
println(!true)
println(!false)
}
//출력결과
//false
//true
//false
//true
참고자료
디모의 코틀린 강좌
https://www.acmicpc.net/problem/2739
import java.util.Scanner
fun main(args: Array<String>) = with(Scanner(System.`in`)) {
val n: Int = nextInt()
if(n>=1 && n<=9) {
for (i in 1..9) {
println("$n * $i = ${i * n}")
}
}
}
https://www.acmicpc.net/problem/2438
import java.util.Scanner
fun main(args: Array<String>) = with(Scanner(System.`in`)) {
for (i in 1..nextInt()) {
for(j in 1..i) {
print("*")
}
print("\n")
}
}
https://www.acmicpc.net/problem/10952
import java.util.Scanner
fun main(args: Array<String>) = with(Scanner(System.`in`)) {
while(true){
val a:Int = nextInt()
val b:Int = nextInt()
if(a==0 && b==0) break
if(a>0 && b<10){
println("${a+b}")
}
}
}