반복문에는 대표적으로 for
, while
, do~while
등이 존재하지만 오늘은 for문
과 while문
에 대해 알아보자
fun main(){
for(변수 in 시작..끝 step 증가량){
//반복적으로 실행할 것
}
for문안에 변수 이름
, 내가 반복할 값의 시작과 끝
을 쓰고 step
을 사용하여 증가량을 나타내면 된다.
fun main(){
for(i in 1..10 step 1){
println(i)
}
var leng = 5;
for(k in 1..leng)
print("$k /")
for(l in 1 until leng){
println("$l |")
}
}
fun main(){
for(i in 1..10 step 1){
println(i)
}
위에서 본 for문을 가지고 선언을 하였을 때 변수 i
시작과 끝을 1~10
으로 하고 증가량을 1
로 하여 코드를 짜 보았다.
코드를 짜고 i를 출력하셨을 때 밑에 결과값 처럼 나오게 된다.
출력값: 1,2,3,4,5,6,7,8,9,10
var leng = 5;
for(k in 1..leng)
print("$k /")
var로 leng라는 변수를 선언하여 1부터 leng까지 증가시키며 k를 print해보았다.
이때 코틀린은 변수를 출력할때 $
표시를 사용한다.
1부터 5까지 나오도록 출력했기 때문에 결과값도 1~5까지 나오게 된다.
결과값: 1 /2 /3 /4 /5
for(l in 1 until leng){
println("$l |")
}
이번에는 앞에서와 똑같아 보이지만 값을 until
로 주고 leng를 증가 시켜보았다.
이렇게 해서 print를 해보면, 아래와 같은 결과를 얻을 수 있다.
위에서 했던 코드와 많이 다를게 없어보이지만, until
은 마지막 숫자가 나오지 않는다.
결과값 : 1 |2 |3 |4 |
while(조건식) {
조건식이 true인 동안 이부분을 실행한다,
}
자바와 동일하게 작성한다.
fun main(){
var two : Array<String> = arrayOf("하나","둘","셋")
for(i in 0..2 step 1){
println(two[i])
}
var k : Int = 0
while(k <two.size){
println(two[k])
k++
}
}
배열과 같이 사용한다고 하였을 때, two배열에 하나,둘,셋이라는 값을 집어넣고, for문을 돌려 two를 print한다. 하고 while문을 돌려 만약에 k가 two.size보다 작으면 two[k]를 출력하고 k++를 즉 k를 증가시킨다
그렇게 하면 밑에와 같이 결과값이 나오게 된다.
결과값: 하나, 둘, 셋, 하나, 둘, 셋
배열선언 방법 보러가기🚀
배열 선언 방법은 위에 링크에 달아놓았다.
오늘은 본격적인 배열 사용에 대해 알아볼 것이다.
코드로 빠르게 1차원 배열을 알아보자
var one = Array<Int>(4,{0})
one[0] = 10
one[3] = 20
for(i in one.indices){
println(one[i])
}
선언을 하고 0으로 초기화시킨다음 각 방에 10,20이라는 수를 넣고 출력하기.
결과값 : 10,0,0,20
일차원 배열은 쉬우니까 빠르게 이차원배열로 넘어가 보자
fun main() {
var two = Array<IntArray>(3, {IntArray(4,{2})})
// 3행 4열의 2차원 배열
// row의 index: 0~2
// col의 index: 0~3
two[1][2] = 100
two[2][3] = 200
println()
for(i in two.indices) {
for(j in two[i].indices) {
print(two[i][j])
}
println()
}
println()
for((i, row) in two.withIndex()) {
for((j, col) in row.withIndex()) {
print("($i, $j) = $col\t")
}
println()
}
}
2차원 배열 3행 4열의 배열을 선언하였다.
for(i in two.indices) {
for(j in two[i].indices) {
print(two[i][j])
}
println()
}
첫번째 for문에서는 two[i][j]를 출력하였다.
자바 코드와 비교해 보았을 때, int i = 0;
, i < two[i].length;
, i++
와 똑같은 코드이다.
📍결과값
2222
221002
222200
⚠️코트 파해치기(2번째 for문)⚠️
for((i, row) in two.withIndex()) {
for((j, col) in row.withIndex()) {
print("($i, $j) = $col\t")
}
println()
}
for((i,row) in two.withIndex()){
📍결과값
(0, 0) = 2 (0, 1) = 2 (0, 2) = 2 (0, 3) = 2
(1, 0) = 2 (1, 1) = 2 (1, 2) = 100 (1, 3) = 2
(2, 0) = 2 (2, 1) = 2 (2, 2) = 2 (2, 3) = 200
이런식으로 결과가 출력되게 된다. 몇번째 방에 값은 어떤 값이 들어가 있고 어디를 가리키는지를 한번에 볼 수 있다.
kotlin 배열도 선언과 동시에 값을 할당할 수 있다.
var three : intArray = intArrayOf(1,2,3)
이런식으로 intArrayOf
를 이용해서 값을 넣어 줄 수 있다.
⚠️배열을 사용하여 두 수의 합을 알아보자⚠️
fun main(){
var one = ArrayList<Int>(4)
one.add(10)
one.add(20)
var sum = one.get(0) + one.get(1)
println(sum)// 두 수의 합을 구한다.
}
이런식으로 넣어도되고
var sum = one.get(0) + one.get(1)
println(sum)
//이 부분을 조금 더 가독성 있게 고쳐보면
for(num in one) {
sum += num
}
println(sum)
//이런식으로 고칠 수 있다.
저렇게 고치게 되면 내가 정해놓은 값 뿐만아니라 범위를 정해 그 안에 있는 수들의 합을 모두 구할 수 있게 된다.