프로그램의 입력과 출력
프로그램은 입력정보를 받아서 출력을 하는 것이라고 할 수 있다. 입력 정보는 문자열, 숫자 등의 Arguments가 될 수도 있고, 파일(File), 네트워크(Network)를 통해 받은 정보, 소리(Audio), 다른 프로그램에서 출력된 정보 등이 될 수도 있다.
출력 정보 역시 화면에 출력할 수 있고 파일에 쓸 수도, 소리로 내보낼 수도 있다. 또 다른 프로그램을 출력할 수도 있다.
기존에 작성했던 코드에서 변수 id를 사용자가 입력하도록 해서 프로그램을 실행할 때마다 다른 값을 가질 수 있게 한다면 어떨까? 사용자가 입력한 값에 따라서 다른 동작을 할 수 있게 한다면 범용적으로 사용할만한, 일반인도 사용할 수 있는 프로그램이 되지 않을까.
팝업에 사용자가 id 입력하도록 하기
이전에 작성해둔 코드의 카피본을 만들어서 테스트해본다.
1. 새로운 파일 이름(OkJavaGoinHomeInput)과 class 이름을 통일해준다.
2. id 부분을 "JAVA APT 803"으로 고정하지 않고 POPUP을 띄워서 사용자가 아파트 정보를 입력하도록 하고 싶다.
- 구글에 "java popup input text swing"이라고 검색해본다.
- "JOptionpane.showInputDialog()"라는 것이 있다는 것을 알 수 있다(stack over flow).
- 복붙해서 id 자리에 대신 넣어주면 빨간 줄이 가는데 이유는 해당 내용(JOptionpane)을 import 해주지 않았기 때문이다. "import javax.swing.JOptionPane"을 한다.
- 그리고 실행해보면 팝업이 나온다.
- 팝업창에 새로운 ID를 입력하고 저장 후 실행해보면 콘솔에 새로 입력한 값으로 모두 바뀌어 실행되는 것을 볼 수 있다.
매우 신기하다..
입력값 추가하기
이번에는 무드등에 불을 들어오게 하고 싶고, 아까와 마찬가지로 사용자가 무드등의 밝기를 입력하도록 하고 싶다면?
1. 기존 org package에서 DimmingLights라는 것을 import해준다(빨간 박스).
- moodLamp에 '.setBrihgt'라는 method를 쓰고 싶은데 ()안에 double이 들어간다(이건 설정되어 있는 것이라, 마우스를 대면 알 수 있다).
- 상단에 bright라는 변수를 설정해주고 아까 위의 id와 동일하게 할당한다.
- 그런데 초록색 박스의 결과는 string이다.
- 보라색 박스 안에 들어갈 인자는 double이기 때문에 string을 double로 convert해주어야 한다.
- 구글에 "java string convert to double"이라고 검색해본다.
- "Double.parseDouble()"이라는 것이 있다는 것을 알 수 있다.
- 입력해준다. 그러면 팝업이 나오고, 팝업 안에 숫자를 입력해주고 실행하면!
- PUSAN APT 101에 moodLamp가 bright 10으로 켜졌음을 알 수 있다!
추가자료
Class JOptionPane
Arguments(인자)를 입력받아 프로그램 실행시키기
Dialogue popup을 통해 입력값을 받아서 프로그램을 실행시키는 방법 이외에도 main method의 args 파라미터(parameter)를 이용해 입력값을 받는 방법도 있다.
- Run Configuration 선택
- Arguments 선택
- Program arguments에 입력값 입력, 문자열의 경우 하나로 인식되도록 하기 위해서 따옴표('')로 묶어준다. 작은따옴표로 에러가 나면 큰 따옴표("")로 묶어준다. (나의 경우 ""로 묶어주니 에러가 나지 않았다)
- Apply
- file 이름 바꾸어서 구분
- Run
- args는 변수 중에서도 사용자와 프로그램의 값을 매개해주는 역할을 하는 변수로, 매개변수(parameter)라고 한다.
- arguments를 입력하게 되면 main 메소드의 args parameter는 arguments 값을 받아서 동작하게 된다.
- args는 문자열 배열(array)로 여러 개의 string 데이터가 들어있을 수 있다.
- 인덱스(index)를 통해 배열의 데이터를 꺼내 쓸 수 있고 index는 0부터 시작한다.
- 앞에서 변수로 2개(PUSAN APT 302, 45.0)를 입력해주었기 때문에 처음 id는 'args[0]'으로 두번째는 'args[1]'로 할당한다.
- 'String[]'은 문자열로만 이루어져 있는 배열(Array)을 말한다.
Arguments(인자)와 Parameter(매개변수)의 차이
출처: stack over flow
-
Parameter is variable in the declaration of function. PLACEHOLDER (This means a placeholder belongs to the function naming and be used in the function body)
-
Argument is the actual value of this variable that gets passed to function. ACTUAL VALUE (This means an actual value which is passed by the function calling)
값을 어떻게 받아오는지 확인하기
- 디버깅을 통해서 값을 어떻게 받아오는지 확인해볼 수 있다.
- String[2]로 "PUSAN APT 302"와 "45.0"으로 값이 잘 들어가는 것을 확인할 수 있고 각 코드의 id에도 "PUSAN APT 302"가 잘 들어감을 확인할 수 있다.