지난 강좌에서 만들었던 모의 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