본문 바로가기
비전공자코딩교실/JAVA

[비전공자코딩교실] 사용자 입력 받아 구구단 출력하기

by 세 미 콜 론 2021. 5. 16.
728x90
반응형

ㅇ지난 시간에는 2단으로 고정된 구구단을 출력했습니다. 그런데 언제나 2단만 필요한 것은 아니죠. 그래서 직접 사용자의 입력을 받아서 해당하는 숫자의 구구단 출력을 할 수 있도록 해보겠습니다. 그렇다면 우선 사용자 입력 받는 방법을 알아보겠습니다. 

우선 다른 소스들은 다시 사용할 예정이니 주석 처리 해줍니다. 앞에 // 를 입력하면 해당 라인은 주석처리가 되어 소스에 영향을 미치지 않습니다. 사용자 입력을 받는 방법은 아래와 같습니다.

새로 추가된 소스에 대해 간단하게 설명해보도록 하겠습니다. 우선 Scanner scan = new Scanner(System.in); 에 대해 하나하나 설명해보겠습니다.

Scanner scan : Scanner 클래스를 scan이라는 이름으로 이용하겠다. Scanner 클래스란 정수나 실수, 문자열 등을 읽어오는 기능이 있다.
new Scanner : 새로운 스캐너를 하나 준비한다.
System.in : 사용자가 input, 즉 입력할 수 있는 환경을 제공한다.

이해가 되셨나요? 쉽게 얘기하면 저 한 줄로 인해 사용자가 입력한 '어떤 것'을 스캐너에 넣겠다는 얘기입니다. 새로운 스캐너를 하나 준비해서 사용자가 입력한 것을 안에 넣어둔다고 이해하시면 될 것 같습니다. 더 간단히 얘기해보자면 종이에 어떤 글자를 써서 스캐너에 넣어둔 상태를 얘기합니다. 아직 스캔버튼은 누르지 않았습니다. 그럼 그 다음줄을 살펴보도록 하겠습니다.

int number = scan.nextInt();
int number : 어떤 숫자를 number라고 부를 예정임.
scan.nextInt() : 아까 준비한 스캐너 scan을 이용할 것인데 스캐너에 들어간 내용엔 숫자만 있어야 함.

자, 여기까지 이해되었다면 number를 출력하는 소스까지 넣도록 하겠습니다.

그렇다면 이 소스의 흐름은 이렇게 이해할 수 있습니다.

1. scan이라는 이름의 스캐너를 하나 준비하여 사용자가 입력한 내용을 넣을 것임.
2. number라는 변수에 스캔한 내용을 넣을건데 사용자가 입력한 내용 중 숫자만 있어야 함.
3. number 변수를 출력할 것임.

이제 실제로 원하는대로 내용이 나오는지 확인해보도록 하겠습니다.

그런데 실행 버튼을 눌러도 아무 내용이 나오지 않습니다. 제대로 실행됐는지도 의심스러운 상황인데요. 이것은 사용자의 입력을 기다리고 있기 때문입니다. 우리는 '세미콜론50'이라는 문자를 입력해보겠습니다. 

여태까지 봤던 검은 글씨가 아닌 연두색 글씨가 나옵니다. 사용자가 입력하고 있다는 의미입니다. 여기에서 엔터를 쳐주도록 하겠습니다. 

오류가 발생했습니다. 그 이유는 바로 nextInt() 때문입니다. nextInt()는 숫자만 받는 친구이기 때문에 세미콜론이라는 글자에 대해 용납할 수 없는 것입니다. 그럼 다시 실행해서 세미콜론이 아닌 50만 입력을 해보겠습니다.

검은색 글씨로 50이 찍힌 것을 확인할 수 있습니다. 이제 사용자로부터 입력받는 방법에 대해 배웠습니다. 그러면 구구단과 함께 접목해보도록 하겠습니다. 우선 주석으로 만들기 위해 소스 앞에 붙였던 //를 지워주도록 합니다. 

우리가 만들고자 하는 것을 순차적으로 적어보도록 하겠습니다.

1. 사용자에게 구구단 몇 단을 확인할 것이냐는 문구를 출력한다.
2. 사용자에게 숫자를 입력받는다.
3. 해당 숫자에 대한 구구단을 출력한다.

1번부터 진행하도록 하겠습니다. 1번은 단순한 출력이기 때문에 System.out.println()을 이용하겠습니다.

2번은 사용자에게 숫자를 입력받는 부분입니다. 아까 사용했던 소스를 그대로 이용해도 될 것 같습니다.

3번은 원래 가지고 있던 소스에서 2만 number로 바꿔서 표시해주면 됩니다.

이렇게 해서 우리는 아래와 같은 소스를 얻게 됐습니다.

저장한 뒤 실행해보도록 하겠습니다. 

곧바로 원하는 단을 입력하고 엔터를 눌러줍니다.

위와 같은 결과를 얻을 수 있습니다. 다시 실행해서 다른 단을 입력해도 만족스러운 결과가 출력될 것입니다.

그런데 이 소스에는 한 가지 흠이 있습니다. 바로 사용자가 숫자가 아닌 문자를 입력하면 오류가 나는 것입니다. 

다음 시간에는 문자를 입력하면 숫자를 입력하도록 하는 소스를 만들어보도록 하겠습니다. 

728x90
반응형

댓글