좋습니다
돌아오신 것을 환영합니다
이번 영상에서는 사용자 입력을 사용해 if else문을 확장시켜 볼 것입니다
따라서 사용자 입력을 콘솔에 얻는 방법을 살펴볼 것입니다
그럼 시작해 봅시다
println()대신 readln()이라는 함수를 사용해 볼 것입니다
자 이 age가 기본 값으로 35로 정의되어 있습니다
하지만 누군가 35가 아닐 수도 있습니다
예를 들어 0이라고 해봅시다
하지만 그 정보는 이곳에서 입력되어야 합니다
그러므로 age를 readln()에 저장해야 합니다
그러니까 이게 무슨 뜻이냐면 사용자가 콘솔에 무엇을 입력하는 이것을 read(읽기) 합니다
그리고 데이터 종류가 맞지 않다는 문제를 마주합니다
그러니까 = 기호 기준 오른쪽의 것이 왼쪽의 것과 같지 않다는
것입니다
이는 문제가 됩니다
어떻게 고칠 수 있을까요?
toInt를 사용해 Integer(정수)로 만들어주는 것입니다
그러므로 사용자가 입력한 것을 읽어낸 다음 Integer(정수)로 바꾸는 것입니다
.toInt() 함수를 사용하는 것입니다
이것의 역할은 String(문자열)을 parse(파싱)하여
그 String을 Integer 숫자로 결과를 반환하는 것입니다
이 뜻은 우리가 무엇을 입력하든 변환된다는 것입니다
String(문자열)을 입력해도 말입니다
숫자여도 그렇습니다
숫자도 String(문자열)일 수 있습니다
만약 제가 35를 입력해도 이 경우에는 숫자를 포함하고 있어도 여전히 String(문자열)입니다
그래서 이것으로 String(문자열)인 35를 Int 데이터의 정수 35로 파싱하는 것입니다
그 다음 age에 저장하는 것입니다
그러면 경고가 사라졌습니다
이것을 꼭 해야 하는 이유는 String(문자열)과 숫자는 서로
비교될 수 없기 때문입니다
이 경우 Integer(정수)끼리 비교가 가능합니다
좋습니다
자 그럼 이제 사용자가 입력한 것을 읽어내어 변환할 수 있습니다
조금 더 쉽게 풀어서 작성해 봅시다
이런 식으로 저장할 수 있습니다
enteredValue(입력된 값)은
String 데이터 종류일 것이고
enteredValue는 readln()될 것입니다
따라서 사용자가 입력한 것을 읽어내라는 것입니다
사실 여기 String 대신 var가 사용되어야 합니다
그 다음 age가 enteredValue.toInt(0)라고 써줍니다
여기서 enteredValue를 Integer(정수)로 변환해 주는 것입니다
그러니까 이 한 줄로 위 두 줄의 과정을 요약한 것입니다
이는 val을 사용할 수도 있으며 이 값을 나중에 덮어씌우지 않을 것이기 때문입니다
더 이해하기 쉽도록 이것은 주석으로 빼두겠습니다
그러니까 여기서 사용자가 콘솔에 입력한 내용을 읽은 다음 그 String(문자열) 변수를 Int 변수로
변환합니다
그러면 문제가 몇 가지 있습니다
첫 번째 문제는 숫자를 입력하지 않았을 경우입니다
한 번 시도해 봅시다
자 코드를 실행하면
무언가를 입력하라고 요청합니다
요청하는 것은 아니지만 어쨌든 무언가를 입력할 수 있습니다
여기에 33을 입력해 보겠습니다
그러면 "클럽 입장 가능"이라는 문구가 뜨는데 사용자의 이해를 돕기 위해
여기에 println()을 추가해 보겠습니다
이를 통해 사용자에게 무언가를 입력해야 한다고 콘솔에 띄우는 것입니다
"So please enter your age as a full number." (완전한 숫자로 나이를 입력해 주시기 바랍니다)
그럼 코드를 재실행하여 확인해 봅시다
그러면 조금 더 시각적으로 알려줍니다
이러한 문구가 뜨는데 완전한 숫자라는 단어보다 정수가
좋을 것 같습니다
그럼 이제 17을 입력해 보겠습니다
17을 입력하고 엔터를 누르면 이 String(문자열) 17을 읽어내고
Integer(정수) 17로 변환하여 age 안에 저장합니다
그 다음에 age가 18보다 크거나 같은지 비교하여 클럽 입장이 가능한지
알려줍니다
만약 그렇지 않다면 입장하기에 너무 어리다는 문구가 실행됩니다
따라서 엔터를 눌러보면 "클럽 입장 연령 미달"이라는 문구가 보입니다
그것이 이 코드가 하는 일입니다
조금 더 자세히 살펴보겠습니다
구조적으로 말입니다
자 이렇게 하면 모든 내용이 한 화면에 보입니다
먼저 0을 정의해 주었습니다
그 다음 사용자에게 정수의 나이를 입력하라고 알려줍니다
그리고 사용자가 입력한 값을 읽습니다
쉽게 말해 콘솔이 기다리는 것입니다
이 시점까지는
무언가 입력되기를 기다렸다가 입력이 되면 그것을 변환하고
if else문에서 다룹니다
다시 실행해 보겠습니다
하지만 이번에는
숫자를 입력하지 않겠습니다
Asdf를 입력해 보겠습니다
그러면 오류가 발생한 것이 보입니다
이 방법은 애플리케이션을 고장낼 수 있는 방법 중 하나입니다
Number Format Exception이라는 것이 발생하는데 쉽게 말해
입력된 정보가 예상한 종류의 데이터가 아니라는 오류입니다
그리고 예상한 데이터는 Integer(정수)입니다
좋습니다
이런 식으로 앱에 오류를 유발할 수도 있습니다
그러니까 항상 주의하시기 바랍니다
다시 앱을 재실행하여 25를 입력해 보겠습니다
그럼 "클럽 입장 가능"이라고 출력됩니다
이것이 if와 else가 수행하는 일입니다
그리고 readln()의 역할도 중요했습니다
이것을 사용해 사용자의 입력을 읽어냈습니다
그러니까 readln이 콘솔 내 사용자 입력을 읽고
.toInt()를 사용해 String(문자열)일 경우 Integer(정수)로 변환했습니다
그리고 그것이 이번 영상의 전부입니다
즐거우셨기를 바라며 다음 영상에서는 if와 else의 다른 부분을 조금 더 살펴볼
것입니다
그것은 바로 else if라는 것입니다
그러니까 두 개의 조건보다 더 많은 조건을 사용하고 싶을 때
예를 들어 조건이 18살 이상인 것뿐만 아니라 나이 제한을 두어서 18,
40살 이하인 사람들만 입장하도록 하길 원하면
그렇게 제한할 수도 있습니다
이러한 내용은 다음 영상에서 다뤄보겠습니다
넘어가 봅시다