📌kotlin 반복문 & 배열

📌for문

반복문에는 대표적으로 for , while , do~while 등이 존재하지만 오늘은 for문while문 에 대해 알아보자


📍for문 사용방법

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문

⚠️while문 사용방법⚠️

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를 증가시킨다
그렇게 하면 밑에와 같이 결과값이 나오게 된다.

결과값: 하나,,, 하나,,

📌배열(Array)

배열선언 방법 보러가기🚀
배열 선언 방법은 위에 링크에 달아놓았다.
오늘은 본격적인 배열 사용에 대해 알아볼 것이다.

코드로 빠르게 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

일차원 배열은 쉬우니까 빠르게 이차원배열로 넘어가 보자


📌2차원 배열

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()){	
  • 행과 열에대한 객체를 사용하고 싶다면. withIndex가 자바에서 length를 의미한다.
  • two는 2차원 배열 행 전체를 가르키고 있다.
  • .withIndex() 한 행에대한 정보를 받을 수 있다.
  • (i,row) withIndex가 i값과 row 참조값이 들어오게 된다.
  • i(번호와)row(번호에 해당하는 two의 객체 참조값을 가지고 있다)
📍결과값
(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)
    //이런식으로 고칠 수 있다.
    

저렇게 고치게 되면 내가 정해놓은 값 뿐만아니라 범위를 정해 그 안에 있는 수들의 합을 모두 구할 수 있게 된다.

profile
fire-irror

0개의 댓글