1. 소개
지금까지 우리가 만든 프로그램들은 라디오처럼 한 방향으로만 말했지, 네가 뭐라고 해도 반응하지 않았어. 당연히 이러면 재미없지! 대부분의 프로그램 목적은 사용자에게 뭔가 쓸모 있는 걸 해주는 거야. 그래서 사용자가 키보드로 데이터를 입력할 수 있게 해줘야 할 때가 많아.
예를 들어:
- 계산기는 네가 숫자랑 연산을 입력하길 기다려.
- 웹사이트 폼은 네 이름, 이메일, 주소를 받아서 신청서를 처리해.
- 컴퓨터 게임은 플레이어 이름을 물어봐.
오늘은 우리 앱에 마이크를 달아줄 거야! 아니면 귀라고 해도 되고 :) 준비됐지? 가자!
2. Console.ReadLine()과 친해지기
Console.ReadLine()은 프로그램이 사용자가 키보드로 입력한 데이터를 받을 수 있게 해주는 함수(혹은 "명령어")야.
프로그램이 Console.ReadLine() 명령에 도달하면, 프로그램은 멈추고... 네가 뭔가 입력하고 Enter를 누를 때까지 조용히 기다려. 네가 Enter 누르기 전까지 입력한 모든 게 하나의 문자열로 받아져. 이 문자열이 프로그램으로 돌아가 — 마치 사용자가 창구에 쪽지를 건네주는 것처럼.
기본 예제
// 사용자에게 이름을 물어보고 인사해보자
Console.WriteLine("너 이름이 뭐야?");
string userName = Console.ReadLine(); // 여기서 프로그램이 입력을 기다려!
Console.WriteLine("안녕, " + userName + "!");
어떻게 동작하냐면:
- 화면에 이렇게 떠: 너 이름이 뭐야?
- 네가 예를 들어 안드레이라고 입력하고 Enter를 눌러.
- userName 변수에 "안드레이"가 저장돼.
- 화면에 이렇게 나와: 안녕, 안드레이!
바로 주의할 점: Console.ReadLine()이 반환하는 건 항상 문자열(타입 string)이야. 사용자가 숫자를 입력해도, 그건 그냥 문자열이야!
3. 예제들
Console.ReadLine()이 실제로 어떻게 쓰이는지 보자.
예제 1: 사용자 이름 입력받기
Console.WriteLine("네 이름을 입력해줘:");
string name = Console.ReadLine();
Console.WriteLine("환영해, " + name + "!");
예제 2: 한 줄에 결과 출력하기
+ 연산자를 써서 텍스트랑 입력값을 바로 합칠 수 있어.
Console.Write("네가 좋아하는 색깔: ");
string color = Console.ReadLine();
Console.WriteLine("멋지다! 네가 좋아하는 색깔은 " + color + "이야.");
이 예제에서는 Console.Write(줄바꿈 없이)를 써서, 질문 바로 뒤에 사용자가 입력할 수 있게 했어.
예제 3: 여러 번 입력받기
미니 설문지를 만들어보자:
Console.Write("이름이 뭐야? ");
string name = Console.ReadLine();
Console.Write("몇 살이야? ");
string age = Console.ReadLine(); // 일단 문자열로 받아
Console.WriteLine("네 이름은 " + name + "이고, 나이는 " + age + "살이구나.");
이렇게 보일 거야:
이름이 뭐야? 비카
몇 살이야? 23
네 이름은 비카이고, 나이는 23살이구나.
4. 숫자 데이터 입력: 변환
여기서 초보자들이 자주 빠지는 함정이 있어! Console.ReadLine()은 항상 문자열을 반환해, 사용자가 123을 입력해도 마찬가지야.
숫자를 받고 싶으면, 문자열을 원하는 숫자 타입(예: int)으로 바꿔야 해. C#에서는 변환 메서드, 예를 들어 int.Parse()나 Convert.ToInt32()를 써. 이건 지난 강의에서 이미 얘기했지.
예제: 나이 물어보기
Console.Write("몇 살이야? ");
string input = Console.ReadLine(); // 예를 들어 input = "27"
int age = int.Parse(input); // 문자열 "27"을 숫자 27로 변환
Console.WriteLine("1년 뒤엔 " + (age + 1) + "살이 될 거야");
사용자가 숫자가 아닌 걸 입력하면 프로그램이 에러(FormatException)를 던져. 나중에 더 안전한 코드를 만드는 법도 배울 거지만, 간단한 실험엔 이 정도면 충분해.
5. 꼭 만나게 될 실수들
숫자로 변환하는 걸 까먹었을 때:
Console.ReadLine()에서 받은 값을 변환 없이 숫자로 쓰려고 할 때.
string input = Console.ReadLine();
int sum = input + 5; // 에러! 문자열은 숫자랑 더할 수 없어.
int로 변환해야 해:
int sum = int.Parse(input) + 5;
변수를 선언 안 했을 때:
name = Console.ReadLine(); // 에러! name 변수가 선언되지 않았어.
먼저 선언해야 해: string name = Console.ReadLine();
입력과 출력 순서를 헷갈렸을 때:
초보자들은 이런 실수를 자주 해. 근데 프로들도 해. 그냥 똑똑한 척하면서 :)
string name = Console.ReadLine();
Console.WriteLine("이름을 입력해: " + name); // 먼저 물어보고, 그 다음에 읽어야지!
올바른 순서:
Console.Write("이름을 입력해: ");
string name = Console.ReadLine();
Console.WriteLine("안녕, " + name);
꿀팁
질문 없이 Console.ReadLine()만 써도(예: 그냥 string x = Console.ReadLine();), 프로그램은 입력을 기다려. 근데 사용자는 뭘 입력해야 할지 몰라! 그래서 항상 Console.Write()나 Console.WriteLine()으로 명확하게 안내해주는 게 좋아.
GO TO FULL VERSION