Programming 기초/Java

[Java] 프로그램의 입력과 출력

뭉제 2023. 2. 17. 17:24
목차
1. 프로그램에 입력
2. 프로그램 실행 - 아규먼트 입력
3. 아규먼트 vs 파라미터

 

 

프로그램이 항상 똑같은 작업만 하는 것이 아닌 실행할 때마다 다른 값을 이용해야 한다면 어떻게 해야 할까?

프로그램을 사용자의 입력을 받아 처리하는 형태로 만들어야 할 것이다.

 

 

프로그램은 입력을 받아서 출력을 할 수 있다.

 

입력 정보는 아규먼트, 파일, 네트워크를 통해 받은 정보, 소리, 다른 프로그램에서 출력된 정보 등이 될 수 있다.

입력값이 처리된 결과를 화면에 출력할 수 있고, 파일에 쓸 수 있고, 소리, 또 다른 프로그램에게 출력할 수도 있다.

 

 

프로그램에 입력하기


이전 게시글의 OkJavaGoInHome을 입력을 받을 수 있게 수정해 보자.

 

import javax.swing.JOptionPane;
import org.opentutorials.iot.DimmingLights;
import org.opentutorials.iot.Elevator;
import org.opentutorials.iot.Security;
import org.opentutorials.iot.Lighting;

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+"/Floor Lamp");
		floorLamp.on();
		
		DimmingLights moodLamp=new DimmingLights(id+" moodLamp");
		moodLamp.setBright(Double.parseDouble(bright));
		moodLamp.on();
	}
}

 

ID 입력받기

1) 변수 선언

· 변수 id를 이용해 사용자로부터 입력을 받아 프로그램을 실행할 때마다 다른 값 저장

 

2) 다이얼로그 창으로 입력받기

· import 구문으로 JOptionPane 객체를 이용

import javax.swing.JOptionPane;

 

· JOptionPane 객체의 showInputDialog 메소드 이용

· 입력 다이얼로그 창을 통해 id 값을 입력

· 입력한 정보는 변수 id에 저장

String id=JOptionPane.showInputDialog("Enter a ID");

id 입력 다이얼로그 창

 

밝기 입력받기 

DimmingLight 객체는 setBright 메소드에 double 데이터를 입력받아서 밝기를 설정한다.

다음은 DimmingLight 객체인 moodLamp를 생성해 밝기를 10으로 설정한 것이다.

 

DimmingLights moodLamp=new DimmingLights(id+" moodLamp");
moodLamp.setBright(10);
moodLamp.on();

 

집에 들어올 때마다 밝기를 다르게 하고 싶을 경우, 밝기 값도 입력받아 설정할 수 있다.

 

1) 변수 선언

· 변수 bright를 이용해 사용자로부터 입력을 받아 프로그램을 실행할 때마다 다른 값 저장

 

2) 다이얼로그 창으로 입력받기

· JOptionPane 객체의 showInputDialog 메소드 이용

· 입력 다이얼로그 창을 통해 밝기 값을 입력

· 입력한 정보는 변수 bright에 저장

String bright=JOptionPane.showInputDialog("Enter a bright level");

밝기 입력 다이얼로그 창

 

3) 타입 변환

· setBright 메소드의 밝기는 double 데이터로 입력

· 문자열인 bright를 double 타입으로 변환 필요

moodLamp.setBright(Double.parseDouble(bright));

 

실행결과

id=JAVA APT 507, bright=10.0 으로 입력

 

 

아규먼트를 입력받아 프로그램 실행하기


위에서 한 방법 말고도 main 메소드의 args 파라미터를 통해 입력값을 받는 방법도 있다.

 

1) 아규먼트 입력하기

· Run 버튼의 팝업 창에서 Run Configurations 클릭

· Arguments 탭에서 Program arguments에 데이터 입력

· 공백을 기준으로 구분 

· 공백을 포함한 인자값을 넣고 싶을 때 큰따옴표 사용(한 개의 문자열로 취급)

아규먼트 입력

 

2) 코드 수정

String id=args[0];
String bright=args[1];

· 아규먼트를 입력하면 main 메소드의 args 파라미터는 아규먼트 값을 받아서 동작

· args문자열 배열 -> 여러 개의 String 데이터 저장 가능

· 인덱스로 배열의 데이터를 사용, 인덱스는 0부터 시작

 

 

아규먼트와 파라미터


아규먼트(argument): 전달인자, 인자 

· 메소드를 호출할 때 전달되는 실제값

 

 

파라미터(parameter): 매개변수

· 메소드가 호출될 때 전달된 값을 메소드 내부로 전달하는 역할을 하는 변수

· 메소드의 정의 부분에 나열되어 있는 변수

 

=> 메소드가 호출될 때마다 해당 호출에서 사용된 인자들을 각각에 해당하는 매개변수에 대입시킨다.

=> 메소드 정의의 한 부분으로 바뀌지 않는 매개변수와 달리 인자는 호출할 때마다 값이 바뀔 수 있다.

 

 

ex) Elevator 객체의 callForUp 메소드 호출

· 전달인자 = 1

· 매개변수 = stopFloor

-> callForUp 메소드를 호출하면서 숫자 1을 인자로 전달한다.

-> 1이 stopFloor에 대입되고 callForUp 메소드는 이를 이용해 결과를 출력한다.

 

ex) main 메소드

· 전달인자 = "JAVA APT 507", 15.0 

· 매개변수 = args

-> main 메소드가 시작되기 전, 인자들은 각각 문자열로 만들어지고 문자열 배열에 저장된다.

-> 문자열 배열에 대한 레퍼런스가 매개변수 args에 전달된다.