IMCAT.DEV
로그인 가입
Scala 입문 기초

Scala 입출력 (I/O)

Scala 입출력 (I/O) — 초급

입출력 (I/O)

1. 도입 (왜 배워야 하는가)

입출력(I/O)은 프로그래밍에서 매우 중요한 개념입니다. 프로그램이 외부와 상호작용하기 위해서는 사용자로부터 데이터를 입력받고, 처리한 결과를 출력해야 합니다. 예를 들어, 웹 애플리케이션에서 사용자가 입력한 정보를 처리하고, 그 결과를 화면에 보여주는 것이 전부 입출력 과정입니다.

입출력을 이해하지 못하면 프로그램의 기능이 제한됩니다. 예를 들어, 사용자 정보를 관리하는 애플리케이션을 만든다고 가정했을 때, 사용자의 입력을 받지 못하면 프로그램은 아무런 동작을 하지 않게 됩니다. 따라서 입출력은 소프트웨어 개발의 기초 중 하나입니다.

2. 핵심 개념 설명

입출력의 기본 개념을 이해하기 위해 몇 가지 주요 용어를 살펴보겠습니다.

용어설명
입력(Input)프로그램이 외부에서 데이터를 받는 과정
출력(Output)프로그램이 처리한 결과를 외부에 전달하는 과정

이러한 개념은 마치 사람과의 대화처럼 생각할 수 있습니다. 우리가 대화할 때 상대방이 질문을 할 때, 우리는 대답을 하여 정보를 주고받습니다. 프로그램도 마찬가지로 사용자로부터 정보를 받아들이고, 처리 후 결과를 사용자에게 보여줍니다.

3. 기본 코드 예제

아래는 Scala에서 입력을 받고 그 결과를 출력하는 가장 기본적인 예제입니다.

import scala.io.StdIn._

object IOExample {
  def main(args: Array[String]): Unit = {
    println("이름을 입력하세요: ") // 사용자에게 이름 입력 요청
    val name = readLine() // 사용자로부터 입력받기
    println(s"안녕하세요, $name!") // 입력받은 이름을 출력
  }
}

실행 결과

이름을 입력하세요:
홍길동
안녕하세요, 홍길동!

코드 한 줄씩 동작 설명

  • import scala.io.StdIn._: 입력 관련 기능을 사용할 수 있도록 라이브러리 불러오기.
  • println("이름을 입력하세요: "): 사용자에게 이름을 입력하라는 메시지를 출력.
  • val name = readLine(): 사용자가 입력한 문자열을 name 변수에 저장.
  • println(s"안녕하세요, $name!"): 입력받은 이름을 포함하여 인사 메시지를 출력.
  • 4. 실전 활용 예제

    예제 1: 쇼핑몰 장바구니

    쇼핑몰 애플리케이션에서 사용자가 장바구니에 아이템을 추가하고, 최종 결제를 처리할 때 입출력을 사용합니다.

    object ShoppingCart {
      def main(args: Array[String]): Unit = {
        var cart = List[String]()
        var continue = true
    
        while (continue) {
          println("장바구니에 추가할 아이템을 입력하세요 (종료하려면 'done' 입력): ")
          val item = readLine()
          if (item.toLowerCase == "done") {
            continue = false
          } else {
            cart = cart :+ item // 아이템 추가
            println(s"$item이 장바구니에 추가되었습니다!")
          }
        }
    
        println("장바구니에 담긴 아이템: " + cart.mkString(", "))
      }
    }

    예제 2: 사용자 정보 수집

    사용자로부터 여러 정보를 입력받아 출력하는 프로그램입니다.

    object UserInfo {
      def main(args: Array[String]): Unit = {
        println("이름을 입력하세요: ")
        val name = readLine()
        
        println("나이를 입력하세요: ")
        val age = readLine()
        
        println(s"$name 님의 나이는 $age 세입니다.")
      }
    }

    5. 흔한 실수와 주의사항

    실수 1: 입력을 받지 못하는 경우

    val name = readLine() // 입력을 받지 않고 바로 출력하는 경우
    println(s"안녕하세요, $name!") // name이 초기화되지 않아 오류 발생

    올바른 코드: 입력을 받기 전에 println으로 사용자에게 입력 요청을 해야 합니다.

    실수 2: 데이터 타입 혼동

    val age = readLine() // 나이를 문자열로 받음
    println(s"내 나이는 ${age + 1}세입니다.") // 숫자와 문자열을 잘못 더함

    올바른 코드: 나이를 정수형으로 변환해야 합니다.

    val age = readLine().toInt // 문자열을 정수로 변환
    println(s"내 나이는 ${age + 1}세입니다.") // 이제 정상 작동

    6. 정리

  • 입출력(I/O)은 프로그램이 외부와 상호작용하는 기본적인 방법입니다.
  • 입력(Input)과 출력(Output)의 개념을 이해하는 것이 중요합니다.
  • Scala에서 사용자 입력을 받기 위해 scala.io.StdIn을 사용합니다.
  • 실무에서는 장바구니 구현, 사용자 정보 수집 등 다양한 상황에서 입출력이 사용됩니다.
  • 다음에 학습하면 좋은 주제는 파일 입출력(File I/O)입니다. 파일을 통해 데이터를 읽고 쓰는 방법을 배우면 더욱 강력한 프로그램을 만들 수 있습니다.