본문 바로가기

생활코딩/JAVA1

생활코딩) JAVA1 - 11.1. 입력과 출력

youtu.be/-xllzUahaFQ

자 프로그램 이라고 하는 것은 들어오는 정보 입력을 처리해서 출력을 만들어내는 그런 기계라고 할 수 있습니다. 자 이번 시간에 우리가 살펴볼 주제는 굉장히 중요하고 흥미로운 주젠데요. 우리가 만드는 프로그램의 인풋을 즉 입력 값을 어떻게 주나 라는 것을 살펴볼 건데요.

아주 다양한 것들이 입력 값이 될 수 있어요 예 가장 일반적인 것은 argument 라고 해서 우리가 프로그램을 실행할때 어떤 그 텍스트 정보를 주는 것이 이제 argument라고 할 수가 있구요, 그 다음에 그거 외에도 음 어떤 파일에 내용을 읽어서 프로그램이 동작한다 면 그 파일의 내용이 입력 값이 되는 겁니다. 또는 어떤 웹사이트에 있는 정보를 다운로드 받아서 다시 말해서 네트워크를 이용해서 그에 따라서 프로그램이 동작한다는 그것도 입력이 되는 것이죠. 또 우리가 말을 얘기 해야 합니까 이 프로그램이 그 말을 알아 들어서 동작한다 면 그 사운드 오디오도 입력이 될 것이고요. 또는 다른 프로그램이 실행한 출력 결과를 입력 받아서 프로그램이 동작한다면 다른 프로그램이 입력의 소스가 될 수가 있는 것이죠 자 그것에 대한 결과로써 화면에 출력할 수도 있고 파일에 쓸 수도 있고 소리를 낼 수도 있고 다른 프로그램의 게 또 출력할 수도 있게 되는 것입니다

그래서 이번 시간에는 어떻게 우리의 프로그램이 언제나 똑같이 동작하는 것이 아니라 우리가 준 입력 값에 따라서 프로그램이 다르게 동작하는 것을 살펴볼 것이고요. 이것만으로도 우리의 프로그램은 혁명적으로 변화하게 될 것입니다. 

 

이사를 매일 하다보면, 또 이 프로그램에 따른 사람들도 쓸 수 있게 하다 보면 생길 수 있는 아쉬움에 대해서 좀 살펴보는 시간을 갖도록 하겠습니다. 여기 있는 id 값을 프로그램을 실행할때 마다 코드를 바꾸는 것은 굉장히 좋은 일이 아니란 말이죠.  어떻게 하고 싶냐 프로그램을 실행하면 사용자가 어떤 텍스트 정보를 입력해서 저 id 값을 세팅할 수 있으면 얼마나 좋을까요, 자 이런 일을 하기 위해서 우리가 가장 먼저 해봐야 될 것은 검색입니다.

 

java input text popup swing

 

자 그래서 한번 제가 이걸 카피해서 String path = JOptionPane.showInputDialog("Enter a path"); 여기에다가 한번 적용을 시켜 보면 어떨까 라는 생각이 드는 거예요. 다음에 여기에다가 아까 우리가 봤던 요 코드를 요렇게 카피해서 붙여넣기 를 해보겠습니다. 자 이렇게 했더니 빨간색 밑줄 쫙 하여 그 이유는 뭐냐면 JOptionPane 이라고 하는 저 기능은 기본적으로 음 여러분이 사용할 수가 없어요. 거기다 마우스를 올려놓고 살짝 클릭을 해보면 임포트 JOptionPane 이라고 되어 있습니다. 그리고 이것은 스윙 이라고 적혀 있죠. 자 여러분 클릭해 보겠습니다 클릭하면 위쪽에 요렇게 생긴 한줄이 추가 되요 그럼 이제 이게 무슨 뜻이냐면 JAVA 의 수행 에 속해있는 JOptionPane 이라고 하는 클래스가 로드되었다라는 뜻이고 그 때부터는 사용할 수 있게 되는 겁니다. 잘 몰라도 괜찮아요 자 그리고 한번 실행을 시켜 볼까요. 



제가 여기에다가 아파트를 부아파트 1004호

 


이것을 통해서 우리가 추론할 수 있는 것은 여기 있는 이 코드(JOptionPane.showInputDialog("Enter a ID");)에 의해서 자바가 스윙 이라는 기술의 JOptionPane 이라고 하는 어떤 기능에 그 ShowInputDialog 라는 기능을 켜 주면 이렇게 생긴 조그만 상자가 뜨고 이 상자 에다가 우리가 어떤 값을 입력할 때까지 자바는 실행을 멈춰 있다가. 여기다가 우리가 JAVA APT 이렇게 입력하고 ok 를 누르면 여기 있는 이만큼의 값이 텍스트 로 바뀐다 라는 것을 알 수 있는 것이죠. 

정말 좋은 기능 아닌가요 자 이걸 통해서 우리가 하게 된 것은 우리가 만든 프로그램이 언제나 똑같이 동작하는 것이 아니라 사용자가
입력한 값에 따라서 다른 동작을 하게 되는. 굉장히 똑똑하고 범용적으로 쓸만한 또 코드를 고칠 지 모르는 일반인도 사용할 수 있는 프로그램이 된 것입니다. 엄청난 일이에요 

 

자 그런데 우리가 만든 이 프로그램의 입력 값을 넣는 방법으로 show input dialog란 사례를 살펴 봤는데 입력 값을 여러개 놓고 싶음 어떨까요. 자 예를 들어 볼까요 자 우리가 갖고 있는 램프가 이런 일반적인 램프 말고 디밍 이라고 해서 이 밝기를 조절할 수 있는 램프를 한번 위에 집에 있는걸 조정을 한번 해 볼까요. 

 


자 그래서 저는 스트링 브라이트 그리고 이 위에 있는 요 값을 요렇게 해서 이렇게 한 다음에 이 bright 값을 여기다가 주는 거예요 자 그런데 이렇게 했더니 빨간색 밑줄 쫙 켜진 거 에요.

 


왜 그러냐면 맛을 올려 노니까 뭐라고 써 있어요

여기 있는 bright 는 double 형이 온다 라고 되어 있습니다. 자 그런데 여기에 들어온 요걸 입력해서 들어온 값은 더블 형이 아니라
스트링 이에요. 어떤 상황에 우리가 가져온 값은 스트링 인데 우리가 넣어야 될 값은 더블 형인 거에요. 그럼 이제 우리가 해야 될 것은 어떻게 하면 스트링을 더블 형으로 컨버팅 할 것인가를 알아 보셔야 돼요.

 

자 그럼 또 검색 엔진을 키고 java string to double conversion. 클릭해서 봤더니 보시는 것처럼 double value = Double.parseDouble(text); 이라고 하게 되면 파스 이제 분석한다는 거 거든요. 그래서 이렇게 하면은 어 입력 값으로 들어온 문자가 더블 형으로 바뀌나 봐요. 

 

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

}


그리고 ok 버튼을 누르면 그 다음에 브라이트 레벨을 입력하라고 하죠

 


아파트의 브라이트가 10만큼 세팅 되었다 라고 나오는 것을 볼 수가 있습니다.

자 그래서 이렇게 해서 우리가 input값을 show input dialog라고 하는 아주 흥미로운 친구를 통해서 알아보는 방법을 살펴 봤는데요. 우리가 프로그램을 배우는 중요한 흐름 중의 하나. 어떤 인풋이 있는가 그리고 그 input을 어떻게 프로그램 안으로 끌고 들어 올 수 있는가 라는 것을 익히는 것도 여러분이 프로그램을 배우는데 있어서 굉장히 중요한 주제라고 할 수 있습니다.
 


------

* 유튜브 강의에서 자막을 추출해 정리했습니다.

------

 

  • 입력값을 사용했을 때 장점: 매번 코드를 바꾸지 않고도 입력값에 따라 다르게 동작하게 할 수 있다.
  • 입력값의 종류: 파일, 오디오, 텍스트, 다른 프로그램의 출력값, argument, 등
반응형