[부스트코스/쉽게 배우는 자바 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를 눌러보았다.

  • 출력결과 idBoostCourse 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를 클릭해 자주 사용하는 것들을 추가해주면 좀더 편리하게 사용할 수 있다.

부스트코스
https://www.boostcourse.org/opencourse

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


좋은 웹페이지 즐겨찾기