wanna be dev 🧑‍💻

Cool 하고 Sick한 개발자가 되고 싶은 uzun입니다

A.K.A. Kick-snare, hyjhyj0901, h_uz99 solvedac-logo

Android/Challenge

패스트캠퍼스 챌린지 28일차

Kick_snare 2022. 2. 20. 23:31
728x90

28일차

30개 프로젝트로 배우는 Android 앱 개발 with Kotlin 초격차 패키지 Online

강의 목표


  • 프로젝트를 따라해보며 앱개발에 필요한 기술을 학습할 수 있습니다.
  • 프로젝트를 따라해보며 앱개발에 필요한 기술을 학습할 수 있습니다.
  • 앱 개발시 원하는 기능을 구현하기 위해 어떤 기술이 필요한 지 알 수 있습니다.
  • 디자인 아키텍처 패턴, 비동기 처리 등 효율적인 앱 개발 방법을 익힐 수 있습니다.

목차 02 Basic - Ch04. 계산기


  • 인트로
  • 계산기 UI 그리기 - 1
  • 계산기 UI 그리기 - 2
  • 계산기 UI 그리기 - 3
  • 계산기로 계산하기 - 1
  • 계산기로 계산하기 - 2
  • 계산 기록 저장하기 - 1
  • 계산 기록 저장하기 - 2
  • 아웃트로

계산기로 계산하기 - 2

  • 이전 포스팅에서는 숫자와 연산자 입력을 받고 View 창에 띄워주는 로직까지 짜보았다
  • 이번에는 실제로 계산까지 되게 할꺼임
  • numberbuttonclicked에서 계산하는 함수 calculateExpression을 추가할 수 있도록 따로 함수를 짜보자
private fun calculateExpression() : String {
    val expressionTexts = expressionTextView.text.split(" ");

    if(hasOperator.not() || expressionTexts.size != 3) {
        return ""
    } else if(expressionTexts[0].isNumber().not() || expressionTexts[2].isNumber().not()) {
        return ""
    }

    val exp1 = expressionTexts[0].toBigInteger()
    val exp2 = expressionTexts[2].toBigInteger()
    val op = expressionTexts[1]

    return when(op) {
        "+"-> (exp1 + exp2).toString()
        "-"-> (exp1 - exp2).toString()
        "*"-> (exp1 * exp2).toString()
        "/"-> (exp1 / exp2).toString()
        "%"-> (exp1 % exp2).toString()
        else-> ""
    }
}
  • 먼저 expressionText의 문자열을 split하여 3개의 문자로 나눈다
  • 연산자가 없거나, expressionText를 나눈 문자열이 3개가 아니라면 예외처리
  • 첫번째와 마지막 문자열이 숫자가 아니라면 예외처리
    • 어떻게 예외처리함? → isNumber()
    • 존재하지 않는 함수 → 내장 함수를 만들어주자
    fun String.isNumber() : Boolean {
        return try {
            this.toBigInteger()
            true
        } catch (e: NumberFormatException) {
            false
        }
    }
    
    • try-catch문을 이용하여 객체를 BigInteger로 변환시켜보자
    • NumberFormatException이 발생한다면 숫자가 아님
  • 이후 숫자로 변환하고 when문을 이용하여 직접 연산해주자

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

수강인증샷

링크

https://bit.ly/37BpXiC

 

728x90