[부스트코스/쉽게 배우는 자바 1] 11. 입력과 출력
부스트코스 쉽게 배우는 자바 1
Chaper 11
11-1. 입력과 출력
프로그램의 입력과 출력
- 프로그램은 입력정보를 받아서 출력을 하는 것이라고 할 수 있다.
- 입력 정보는 숫자, 문자열 등의 아규먼트(argument)가 될 수도 있고, 파일이나 네트워크를 통해 받은 정보, 소리, 다른 프로그램에서 출력된 정보 등이 될 수 있다.
- 출력 정보 또한 화면에 출력하는 형태(모니터)가 될 수 있고, 파일에 쓸 수 있고, 소리로 내보낼 수도 있고, 또 다른 프로그램을 출력할 수도 있다.
프로그램이 입력을 받을 수 있게 하기
지난 강좌에서 만들었던 모의 IoT 프로그램인 OkJavaGoInHome을 변형하여 입력을 받을 수 있도록 해보자.
만약 이전 예제에서 우리가 다른 아파트로 이사를 갔다면, OkJavaGoInHome은 같은 동작을 할 수 없을 것이다.
변수 id가 사용자에게 입력을 받아 프로그램을 실행할 때마다 다른 값을 가질 수 있게 하면, 다른 아파트에서도 같은 동작을 할 수 있지 않을까?
OkJavaGoInHomeInput.java 소스코드
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();
}
}
OkJavaGoInHomeInput.java 소스코드 분석
- 포털사이트에
java popup input text swing
을 검색해보자.
- 스택오버플로우 사이트에서 위와 같은 정보를 찾을 수 있다.
String id = JOptionPane.showInputDialog("Enter a Id");
- 찾은 결과를 토대로 id를 입력받을 수 있는 코드를 입력했더니, 에러가 뜬다.
import javax.swing.JOptionPane;
- 위 코드를 상단에 입력해 주면 해결된다.
- 실행하면 id를 입력받을 수 있는 화면이 출력된다.
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타입으로 변환시키기 위해 코드를 수정하였다.
OkJavaGoInHomeInput.java 소스코드 실행 결과
-
id와 bright를 모두 입력하면 다음과 같이 결과가 출력된다.
-
JOptionPane 객체
의showInputDialog 메소드
를 이용해 입력 다이얼로그로 입력 값을 주는 방법에 대해 알아보았다.
11-2. 입력과 출력 - arguments & parameter
매번 입력 다이얼로그로 입력을 받는 것이 비효율적일 수도 있다.(실행할 때마다 입력하고 클릭해야 하기 때문에)
아규먼트를 입력받아 프로그램 실행시키기
- Run 버튼의 팝업 버튼을 클릭하여 Run Configurations 메뉴를 클릭한다.
- Argument 탭의 Program arguments에 위와 같이 입력한다.
String id = args[0]; Strign bright = args[1];
- Argument 탭에 입력한 값('JAVA APT 507', '15.0')을 받기 위해서 코드를 다음과 같이 수정한다.
- 디버거를 실행해보면 args 배열에 들어있는 값을 확인할 수 있다.
- 아규먼트(인자)를 입력하게 되면 main 메소드의 args 파라미터(매개변수)는 아규먼트 값을 받아 동작하게 된다.
- args는 문자열 배열(array)로 여러개의 String 데이터가 들어있다.
- 인덱스를 통해 배열의 데이터를 꺼내 사용할 수 있고, 인덱스는 0부터 시작한다.
- 입력한 아규먼트 값대로 출력됨을 확인할 수 있다.
만약 여러개의 입력값을 테스트해야 할 경우 다시 Run Configurations 메뉴로 들어가보자.
- 기존의 OkJavaGoInHome을 우클릭하여 Duplicate(복제)한다.
- 아규먼트 값을 다음과 같이 입력한다.
- 하단의 Run 버튼을 누르면 입력한 아규먼트 값대로 출력값이 변경됨을 확인할 수 있다.
- 또한 자주 사용하는 것들은 Run 팝업 하단에 추가되면 편리할 것이다.
- Organize Favorites를 클릭해 자주 사용하는 것들을 추가해주면 좀더 편리하게 사용할 수 있다.
부스트코스 쉽게 배우는 자바 1
https://www.boostcourse.org/cs126
Author And Source
이 문제에 관하여([부스트코스/쉽게 배우는 자바 1] 11. 입력과 출력), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jisubin12/부스트코스-11저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)