inflearn logo
강의

Course

Instructor

[Introductory] Kotlin Syntax for Android

Find Minimum

작은 값 찾기, 이렇게는 왜 안 되나요?

430

Seongjin Lee

5 asked

0

코틀린은 왜 이렇게까지 null 확인에 집착하는지 모르겠네요..

왜 아래와 같이는 안 되나요?

fun solution(list: ArrayList<Int>) : Int{

//val minimum:Int? = list!!.minOrNull()

//이건 나오고

//val sum:Int? = list!!.sum()

//이것도 나오는데

//val result:Int? = sum.toInt() - minimum.toInt()

//이것은 안 나옵니다.

return list!!.sum().toInt() - list!!.minOrNull().toInt()

//이렇게도 안 나오네요.. ㄷㄷ

}

kotlin 코딩-테스트

Answer 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

코드를 보니 int 타입으로 반환해야 하는 문제인데, list.minOrNull() 함수의 반환값이 nullable 합니다. 이는 만약 list가 empty일 경우 null을 반환하기 때문입니다. 그러나 result 변수를 초기화할 때 minimum.toInt()을 실행하면 nullable 변수를 non-null 타입으로 변경하려 하기 때문에 오류가 발생하게 됩니다.

따라서, null인 경우를 방지하고자 minimum과 sum 모두 null 가능성을 고려해야 합니다. 아래와 같이 코드를 수정하면 제대로 동작할 것입니다.
fun solution(list: ArrayList) : Int {
val minimum:Int? = list.minOrNull()
val sum:Int? = list.sum()
return (sum ?: 0) - (minimum ?: 0)
}

위 코드에서는 null일 경우 0으로 초기화하도록 했습니다. 즉, null이 아닌 값이 들어있지 않다면 0을 반환합니다.

참고로, Kotlin에서는 null safety를 위한 기능을 지니고 있기 때문에 null 체크를 하는 것은 중요합니다. 이렇게 코드를 작성하면 NPE 발생 확률이 현저히 줄어듭니다.

문제가 해결되었기를 바랍니다. 감사합니다.

코트린 심화 학습

0

42

2

마지막에서 Int = 20의 의미

0

49

1

키보드관련 문제

0

142

1

인터페이스에 대한 질문입니다

0

252

1

질문

1

198

1

9:20초 쯤 나오는 init은 클래스안에서 공통으로 쓰이는 건가요?

0

291

1

int, string?

0

271

2

when 버전으로도 알려주세요!

0

222

1

for 문 밖에서의 list 타입의 차이점

0

259

2

Object

0

281

1

알파벳 숫자 세기, mutableMap value 값 변경

0

432

1

kotlin enum class

0

376

1

fun query(request: String) ="결과 query $request"질문입니다.

0

294

1

고차함수 7:43분 관련 질문입니다.

1

234

1

코틀린은 map int 밸류값에 ++ 안 되나요?

0

447

2

Unit

0

334

1

Bike() 클래스 와 Bike 클래스의 차이

0

293

1

새로운 변수를 만드는 것이 좋나요?

0

243

1

it 이 정확히 무엇인가요?

0

367

1

ArrayList와 mutableListOf의 차이점

0

1088

1

데이터 타입 Int, Long 에 대한 커버 가능 범위 참고 링크

0

310

1

ArrayList랑 mutableListOf가 차이점이 있나요?

0

376

1

수업자료는 어디서 볼 수있나요~

0

612

1

val mutableListOf

2

326

1