[Kotlin] 2일차 - 코틀린의 기초

가위바위보 게임 만들기 및 코틀린의 기초

 

가위바위보를 만들기 위해선 세 가지의 조건이 있어야한다.

 

1. 사용자의 선택을 저장

2. 컴퓨터의 선택을 저장

3. 승자가 누군지 확인하기

 

다음의 조건을 충족시키기 위해 코틀린의 기초부터 보자

변수

다양한 종류의 데이터를 위한 특정 메모리 공간을 비축해두라고 알려주는 것

https://kotlinlang.org/docs/basic-types.html

 

Basic types | Kotlin

 

kotlinlang.org

다음의 공식 문서를 참조

 

 

Kotiln 연습

 

 

다음과 같이 새롭게 패키지를 만들었다.

fun main() {

}

 

그리고 코드의 시작점이 되는 main 함수를 만들었다.

 

예상치 못한 문제

다음의 에러가 발생하여 ChatGPT에 물어본 결과

 

 

다음과 같이 Gradle의 버전을 올리라는 결과가 나왔다

 

하지만..

 

해당 버전에서 사용중이던 gradle 8.2.0 을 gradle버전을 8.6.0으로 올려 다시 빌드했지만 해당 gradle은 내가 사용중이던 andriod studio Hedehog버전을 지원하지 않는 문제가 발생했다

 

그래서 아예 이럴거 제일 최신버전으로 다시 시작하기로 하였다

 

 

그렇게 어렵게 Hello World 찍기 성공

 

Integer types

정수의 경우는

Kotlin 공식 문서 내

다음의 타입과 사이즈, 최소&최대 값을 가질수 있다.

 

그리고 Kotlin에선 value에따라 자동변환 된다

 

변수 val VS var

 

 

val은 상수(변하지 않는 수)가 들어가며 var는 변수(변동 가능한 수)가 들어갈 수 있다.

 

 

그리고 변수는 다음과 같이 출력이 가능하다.

 

var num : Byte =1

 

다음과 같이 Byte 를 정의 가능하며

 

var num = 123456789

 

다음과 같이 기본적으론 Int를 자동으로 정의한다.

 

 

하지만 다음과 같이 수를 집어넣을 경우 윗줄에는 Int가 자동으로 정의되었지만 아랫줄에는 Long으로 정의되어

TypeError가 발생하게 된다.

 

var num : Long = 123456789
num = 123456789123456789

 

이럴땐 num : Long으로 타입을 정의해줄수있다.

 

Floating-point types

소수의 경우는

 

 

다음의 타입과 사이즈, 최소&최대 값을 가질수 있다.

 

 

그리고 Kotlin에선 value에따라 자동변환 된다

 

 

그리고 float의 경우는 끝자리에 f를 붙였기에 float으로 정의할수 있다

 

 

이러한 식으로 double이 자동으로 정의되는걸 볼 수 있다

 

 

하지만 float으로 지정하거나, 끝에 f를 붙이면 float으로 정의할 수도 있다

 

 

다음과 같이 float에 너무 긴 소수점을 입력하면 3.141592까지 자르고 그뒤의 소숫점을 반올림하는 것을 알 수 있다.

이럴때는 더 정밀한 double을 사용한다.

 

Unsigned integer types

부호없는 정수는

 

다음과 같이 구성되어 있다.

그리고 다음과 같이 작성될 수 있다

 

 

그 이외는 다음과 같이 사용된다

 

 

Booleans

불리언 상태는 다음과 같이 표현이 가능하다

 

Characters

문자의 경우 다음과 같다

 

다음과 같이 정의되며 Char는 유니코드 내에 모든 문자를 사용할 수 있다

 

다음과 같이 \u 를 이용하여 유니코드내에 문자를 이용할 수 있다

val myChar = '\u00AE'
println(myChar)

 

그리고 특수한 기능은 다음과 같다

 

Strings

문자열은 다음과 같다

 

그리고 문자열은 for(반복문)을 이용하여 다음과 같이 접근도 가능하다

 

그리고 String에 . 을 입력하게 되면 다양한 함수를 사용할 수 있다

 

다음과 같이 + 연산자나 변수를 String에 이용할 수도 있다

var name = "jokerson"
println(name + "hi")
//joksersonhi
var firstName = "son"
var lastName = "joker"
println(firstName + "\n" + lastName)
//son joker

 

If expression

if와 else는 다음과 같다

 

var max = a
if (a < b) max = b

// With else
if (a > b) {
    max = a
} else {
    max = b
}

// As expression
max = if (a > b) a else b

// You can also use `else if` in expressions:
val maxLimit = 1
val maxOrLimit = if (maxLimit > a) maxLimit else if (a > b) a else b

println("max is $max")
// max is 3
println("maxOrLimit is $maxOrLimit")
// maxOrLimit is 3

 

그리고 in과 함께

var age = readln().toInt()
if (age in 18..39) println("human")

다음과 같이 사용할 수도 있다 (18이상 39이하라는 뜻)

Readln & toInt

readln을 이용하여 콘솔 값을 입력받을 수 있으며 toInt를 이용하여 입력받은 String을 int형으로 변환후 출력한다

 

var age = 0
age = readln().toInt()
println(age)

//혹은
var age = readln().toInt()
println(age)