

지난 강좌에서 만들었던 모의 IoT 프로그램인 OkJavaGoInHome을 변형하여 입력을 받을 수 있도록 해보자.
만약 이전 예제에서 우리가 다른 아파트로 이사를 갔다면, OkJavaGoInHome은 같은 동작을 할 수 없을 것이다.
변수 id가 사용자에게 입력을 받아 프로그램을 실행할 때마다 다른 값을 가질 수 있게 하면, 다른 아파트에서도 같은 동작을 할 수 있지 않을까?
import javax.swing.JOptionPane;
import org.opentutorials.iot.DimmingLights;
import org.opentutorials.iot.Elevator;
import org.opentutorials.iot.Lighting;
import org.opentutorials.iot.Security;
public class OkJavaGoInHomeInput {
public static void main(String[] args) {
String id = JOptionPane.showInputDialog("Enter a ID");
String bright = JOptionPane.showInputDialog("Enter a Bright level");
// Elevator call
Elevator myElevator = new Elevator(id);
myElevator.callForUp(1);
// Security off
Security mySecurity = new Security(id);
mySecurity.off();
// Light on
Lighting hallLamp = new Lighting(id+" / Hall Lamp");
hallLamp.on();
Lighting floorLamp = new Lighting(id+" / floorLamp");
floorLamp.on();
DimmingLights moodLamp = new DimmingLights(id+" moodLamp");
moodLamp.setBright(Double.parseDouble(bright));
moodLamp.on();
}
}

java popup input text swing을 검색해보자.
String id = JOptionPane.showInputDialog("Enter a Id");
- 찾은 결과를 토대로 id를 입력받을 수 있는 코드를 입력했더니, 에러가 뜬다.
import javax.swing.JOptionPane;
- 위 코드를 상단에 입력해 주면 해결된다.


BoostCourse APT 1004 를 입력하고 OK를 눌러보았다.
id가 BoostCourse APT 1004로 변경됨을 확인할 수 있다.
JOptionPane 객체의showInputDialog 메소드를 이용하면, 입력 다이어로그 창을 이용해서 id 값을 입력할 수 있다.- 입력한 id 정보는
String 데이터형으로 받아들여진다.
무드 램프를 켜는 작업을 추가해 보자.
무드 램프의 밝기를 입력받아 조절하는 작업도 추가할 것이다.
String bright = JOptionPane.showInputDialog("Enter a Bright level");
- 무드램프의 밝기 값을 입력받아 bright 변수에 저장한다.
DimmingLights moodLamp = new DimmingLights(id+" moodLamp");
- DimmingLight 객체인 moodlamp를 생성하였다.
- 에러를 해결하기 위해 상단에 import문을 추가하였다.
moodLamp.setBright(bright);
- 무드램프의 밝기를 입력한 밝기로 설정하는 코드이다.
setBright 메소드의 밝기는double 데이터로 입력해야 하기 때문에 에러가 발생한다.- 입력한 문자열을 double 타입으로 변환해야 한다.

java string to double conversion을 검색한다.
moodLamp.setBright(Double.parseDouble(bright));
- String 타입인 bright를 double타입으로 변환시키기 위해 코드를 수정하였다.



id와 bright를 모두 입력하면 다음과 같이 결과가 출력된다.
JOptionPane 객체의 showInputDialog 메소드를 이용해 입력 다이얼로그로 입력 값을 주는 방법에 대해 알아보았다.
매번 입력 다이얼로그로 입력을 받는 것이 비효율적일 수도 있다.(실행할 때마다 입력하고 클릭해야 하기 때문에)


String id = args[0]; Strign bright = args[1];
- Argument 탭에 입력한 값('JAVA APT 507', '15.0')을 받기 위해서 코드를 다음과 같이 수정한다.

- 아규먼트(인자)를 입력하게 되면 main 메소드의 args 파라미터(매개변수)는 아규먼트 값을 받아 동작하게 된다.
- args는 문자열 배열(array)로 여러개의 String 데이터가 들어있다.
- 인덱스를 통해 배열의 데이터를 꺼내 사용할 수 있고, 인덱스는 0부터 시작한다.

만약 여러개의 입력값을 테스트해야 할 경우 다시 Run Configurations 메뉴로 들어가보자.





부스트코스 쉽게 배우는 자바 1
https://www.boostcourse.org/cs126
.png)