JAVA1

입력과 출력

수업소개

똑같은 결과를 출력하는 프로그램은 일회용입니다. 하지만 입력에 따라서 다른 출력 결과를 만들어주는 프로그램은 다양한 상황에서 힘을 발휘할 수 있습니다. 여기서는 재활용 가능한 프로그램을 만드는 방법을 살펴봅니다.

 

 

 

강의1

소스코드

변경사항

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();

	}

}

 

 

 

강의2

이클립스 내에서 입력값(arguments)를 설정할 때 작은 따옴표로 동작하지 않으면 큰 따옴표를 이용해주세요. 
정정합니다.수업에서 표준적인 입력이라는 표현이 사용되고 있는데, 표준입력이라는 개념이 별도로 존재합니다. 따라서 이 수업에서 다루는 입력은 명령어로 실행되는 프로그램에 파라미터를 통해서 인자를 전달하는 방식이라고 표현해야 좀 더 정확합니다. 명령어로 실행되는 프로그램이 무엇인지는 뒤에서 더 정확하게 배우게 됩니다. 

소스코드

변경사항

import org.opentutorials.iot.DimmingLights;
import org.opentutorials.iot.Elevator;
import org.opentutorials.iot.Lighting;
import org.opentutorials.iot.Security;

public class OkJavaGoInHomeInput {

    // paramter, 매개변수
	public static void main(String[] args) {
		
		String id = args[0];
		String bright = args[1];
		
		// 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();

	}

}

 

댓글

댓글 본문
  1. 율율이
    여기 다시 볼 것
  2. 싱와
    컴퓨터 프로그램은 데이터값을 넣어주는 Input 과정을 거쳐 프로그램을 거쳐 출력되는 output으로 정리된다.

    이떄 input 값에는 아규먼트, 파일, 네트워크 , 오디오, 프로그램(혹은 여기에서 출력된 값) 들이 들어갈 수 있는데
    이렇게 들어간 인풋값들이 무엇이냐에 따라서 자연스럽게 아웃풋도 달라진다.

    우리가 밥을 뭘 먹었느냐에 따라서 응아 색깔이 달라진다고 생각하면 편하다. (우리의 소화과정도 하나의 프로그램이다.)

    ----

    파라미터(매개변수)와 아규먼트의 정확한 차이

    아, 이놈의 파라미터랑 아규먼트, 나중에 다른 언어 앱만들기 강의 들으면 이게 파라미터고 뭐시고 뭐시고 하는데 뭔소린지 하나도 못알아듣겠다. 그래서 정확하게 개념정립하고 가는게 진짜 중요하다고 생각해서 돌아올 수 밖에 없다..하... 스위프트에서는 아규먼트 레이블이고 뭐시고 또 뭐시기 하는데.. 하여간 혼란스럽다. 중요하다. 이거 잘 정립하는거.

    우리가 하나의 프로그램을 짰다고 해보자.

    function anything() {
    system.out.printlm(playing+meditating)
    }

    이라는 함수가 있다고 했을때, 요놈에게 데이터값 하나만을 투입해서 하나의 값을 도출하고 출력하는것만 가능하다. 요 함수를 해석해보자면 이 애니띵함수는 닉값못하고 노는거랑 명상하는거밖에 못한다. 근데, 요 함수를 기껏해서 프로그래밍했는데 노는거랑 명상하는거 합쳐놓은것만 출력하기는 뭔가 아깝다.. 그래서, 요놈들에게 값을 여러개 넣어줄 수 있는 개구멍(변수)을 만든다.

    우리가 매개변수에 대해서는 중고등학교 시절을 지나며 참 많이 친숙해졌을텐데, 이게 매개변수라고 친절하게 설명해주는 수학선생님들은 잘 없는듯 하다.. 바로 f(x) 중 x가 바로 매개 변수다. 이름은 뭔들, 상관없다. f(뭐시기) 라고 해도 딱히 상관없다. 근데 뭐시기는 한글이니까 컴파일 하면 오류나겠지.

    그리고 저 f(x) 에 들어가는 x값이 바로 아규먼트(인자)다. f(2) 여기서 2는 아규먼트다. 즉, 매개변수에 들어가는 정확한 특정한 값을 아규먼트라고하고, 그걸 일반화시킨 변수의 모양이 매개변수라고 할 수 있을것이다.

    그래서 개구멍을 뚫은 애니띵 함수로 수정해보자,

    function anything(doing, thinking) {
    system.out.printlm(doing+thinking)
    }

    이라는 함수가 있었을때, () 안에 있는 doing, thinking 은 매개변수,
    doing = playing, eating , washing, studying , etc.. 이 있다고 할때, playing 이런것 하나하나가 다 아규먼트다.

    이전에는 playing하고 meditating 이라는 하나의 값만 합칠 수 있었다면 이제는 doing과 thinking 이라는 변수안에 들어가는 값들은 모조리 조합이 가능한 진짜 "애니띵" 함수가 된것이다!!
  3. 2010.10.11 argument ""로 완료
  4. string -> double 로 컨버팅하는 코드

    Double.parseDouble()

    다이얼로그창 띄우는 코드
    String 변수 = JOptionPane.showInputDialog("띄우고 싶은말")
  5. 별도로 따로 입력할 필요없이 프로그램 실행 이전부터 미리 입력값을 설정해 놓을수 있다 argument 에 값을 설정 해놓고, args[]라는 매개 변수를 통해 자동화를 시킬수 있다.
  6. 20.08.03
    Run 에도 configuration 가 있듯이
    Debug 에도 configuration 가 있습니다.
    설정을 "" 로 해주셔야 바뀝니다.
    대화보기
    • 최교진
      Run Configuration 에서 Arguments를 큰따옴표로 구분하여 입력하면 프로그램은 정상 실행되지만,
      "Java APT 507" "15.0"

      디버그 모드에서 실행하면 args[] 값에 띄어쓰기 기준으로 보여집니다.

      args String[4] (id=20)
      [0] "'Java" (id=21)
      [1] "APT" (id=29)
      [2] "507'" (id=30)
      [3] "'15.0'" (id=31)

      어떤 이유인지 잘 모르겠네요.. 디버그모드의 오류일까요?
    • 김승현
      args 매개변수,파라미터: 프로그램은 사용자가 입력한 값(파라미터,매개변수)를 받고 출력값을 낸다.
      arguments를 적어주면 매번 입력하지 않고도 출력값을 얻을 수 있다.
    • 김승현
      입력값을 장점? 정해진 값이 아닌 사용자가 원하는 결과값을 얻게 해준다.
      어떤 인풋이 있는가? 아이디 비밀번호 설문작성 검색....
      그 인풋을 어떻게 프로그램에 적용할 수 있는가? 구글링하여 필요한 기능을 찾고 그 기능을 import하여 상요한다
      컨버팅: string to double 등 문자열을 실수값으로 넣을 수 있게 변환시키는 기능
    • d.minn
      2020.09.03 완료
    • 제대로해보자
      완료! (집가서 복습 예정)
    • 초보자바
      8/22 강의1 완료.
      converting또는 여러가지 모르는 코드들은 검색을 통하여 얻을 수있으니 검색이 매우 중요하므로 검색연습도 많이 해야한다. (java string to double conversion : 문자를 실수로 converting하는 코드 검색),
      (java text input popup swing : 텍스트를 팝업에 입력하는 창 띄우는 코드 검색)
      8/26 강의2 완료.
      run configuration에서 항목을 선택하고 arguments에서 인자를 설정할 수 있다.""를 이용하여 인자를 묶을 수 있으며 띄어쓰기로 인자들을 구분할 수 있다. 인자를 사용할 때에는 자바창에서 args{}로 사용할 수 있으며 인자는 왼쪽부터 0,1,2,3 순으로 규명할 수 있다.
    • 포기금지
      저는 이상하게 계속
      agrs
      0=Java
      1=APT
      2=507
      3=15.0
      으로 뜨네요....ㅠㅠ 다시 처음부터 하고 아래 분들 처럼 큰따옴표로도 바꿔보고 띄여서도 해봤는데 해결이 되지 않아서agrs(012);
      agrs(3);
      으로 바꿔서 입력해 넣으니깐 됬습니다. 맞는 방법인지는 모르겠지만.. 일단 다음 강의로 넘어가겠습니다!
    • 치디우기
      20/8/13일 수강 완료~
    • mangjoong
      200813
      1.
      showinputdialog : 자바에서 팝업창 뜨게하는 명령어
      double.parsedouble : 문자열을 실수로 변환시켜주는 명령어
      구글링할 줄 알아야 내가 쓸 수 있는 명령어가 많아진다. 구글링을 자주 시도해보도록 하자.
      ex ) java popup input / java string to double conversion
      2.
      run configuration 항목으로 인자설정을 할 수 있었고 쌍따옴표로 여러 문자들을 하나로 취급할 수 있었다.
      argument 항목에서 인자를 규정하고 매개변수인 args는 args[0], args[1] ...와 같이 표현하여서 규정된 인자들을 순서에 맞게 사용가능하다.
    • 재도전
      8/8 완료
    • 느리지만꾸준히
      Run Configurations 에서 args 입력할때 큰따옴표" 입력해야 정상적으로 되네요~

      Run Configurations arguments로 입력값 실행리스트 만들기 !!
    • 매일
      7.30 완료
    • 프로그래머Y
      1. 특정 단어를 일괄적으로 입력하고 싶을 때 입력값을 이용해 손쉽게 처리할 수 있다.

      2. 두번째 강의 디버깅 이용하면서 오류발생. 나중에 다시 시도해봐야지!
    • 남붕어
      1. 나중에 고유 입력값을 넣으면 다르게 반응하는 이스터에그도 만들 수 있을 것 같고, string 또는 number 류가 가능하지않을까요...?

      2. args가 매개변수인데 이거는 argument에서 넣어준 값에 따라 결과 값을 넣어준다.
      "a" "b" "c" "d"를했을때
      string xx = args[0];
      string xx = args[1];
      string xx = args[2];
      string xx = args[3]; 은 오류가 났다...
      그치만 string xx = args[0];에서 0부분만 123으로 바꾸니 a에 대한 수행 b에 대한 수행 c에 대한 수행으로 바뀌어서 나왔다.
    • 다미
      public static void main(String[] args) {
      -여기서 args 가 매개변수
      -문자열이 [] 이 안에 들어가 구분된다는 것
      -args에 값 들어가는 것

      넘우 신기하네요
      그냥 사용하면서도 궁금해하지도 않고 썼던건데
      이마를 탁 ! 치고 갑니다 ,,
    • 니이내이
      argument란 이것을 받음으로써 입력값을 받을수있다. 이것을 위해서는 args라는 parameter를 통해 argument가 들어오고 이것을 이용하여 프로그램 변수에 값을 넣어줄수있다.
    • buffybuff
      arg입력할 때 "" 큰 따옴표 입력해야 되네요!
    • 선대범
      강의2
      String id = args[0];
      String bright = args[1];

      run configuartions-argument 원하는값 프리설정
    • 선대범
      강의1 : JOptionPane.showInputDialog, 빨같 밑줄 참고(import)
    • 영철이
      argument : 호출인자 -> 함수의 호출 부분에서 사용됨
      parameter : 매개변수 -> 함수의 정의 부분에서 사용됨

      Sum(1, 2);

      int Sum(int n, int m){
      return n+m;
      }

      위와 같을 때
      Sum(1, 2); 의 1과 2는 argument
      int Sum(int n, int m) 의 n과 m은 parameter
    • yechubot
      argument - 인자
      parameter- 매개변수
      parmeter를 통해 argument 값을 받는다.
    • dofvmrhwk
      이해 아직 잘 안되지만 다음에 한번더 들어야 겠어용ㅎㅎ
    • 박수찬
      팝업이 뜨면서 텍스트를 입력하고 싶다. swing
      showInputDialog

      arguments & parameter
    • 브라이언
      큰따옴표로 완료.
    • nsnsns
      저도 그런데 혹시 해결하셨나요??
      대화보기
      • 문병민
        2020.03.13 완료

        파라미터를 통해 값을 아규먼트로 받아서 출력이 되는건가요?

        맞게 이해했는지 모르겠네요 ㅋㅋ
      • 정찰스
        입력값을 이용하면, 사용자가 원하는 값을 입력과 동시에 일괄적으로 변환할 수 있다.
      • cmg8431
        2020.03.11 완료
      • 완료
      • 쥰쥰
        저는 띄어쓰기를 해야 argument값이 구분되네요.
        작은따옴표랑 큰따옴표 둘다 오류떴어요.
      • 자바를자바라
        2020-03-05
        Input & Output
        Argument & Parameter
      • 수영
        20200227
        큰따음표로 하니 저도 됩니다
      • 칩과데일
        少し難しくなりますね。
        とりあえず完了です
      • 권태우
        신기한기능 쉽게 배우고 있습니다. 엄청난 강의력 ㅠㅠ
      • 오 큰따옴표로 하니까 또되네요...ㅎㅎ..디버그 오류 좀 빨리 해결되면 좋겟습니다ㅠㅠ
      • 나도볼래
        진짜 설명 쉽게 해주셔서 감사히 잘따라했습니다. 진짜 최고세요..나의 빛..
      • 완료했습니다! ㅎ_ㅎ
      • 뉸찡
        2020.01.31 완료!
        " 큰 따옴표로 하니 제대로 작동하네요!
        댓글 덕분에 해결 너무 고맙습니다
      • 임지수
        2020.01.26 완료
        +''대신 ""로 바꿔서 하니 작동됨
      • 조혜령
        큰 따옴표로 하니까 제대로 동작하네요! 댓글들 감사합니다..
      • 라또마니
        저도 댓글보고 작은 따옴표에서 큰 따옴표로 바꾸니 인식을 하네요 감사합니다.
      • 취생아
        완료 2020.01.13
      • 소금설탕
        완료. 고맙습니다. 반복해봐야겠어요...
      • 윌리엄
        매개변수(parameter)가 variable이라면 전달인자(argument)는 value이네요.
        public static void main(String[] args) {

        }

        에서 args는 main 메소드를 정의할 때 사용된 매개변수입니다.( f(t)=t+2, t=x*x+2x+1 에서 f(t) 안의 t를 매개변수라고 하듯이 ) 여기서 매개변수가 여러 개 사용되면 그 집합을 매개변수 목록(parameter list)라고 하고요.
        그리고 함수를 호출할 때, 여기서는 프로그램을 실행했을 때 main 메소드가 호출되며 args에 들어있는 전달인자들이 사용됩니다.( f(4) 에서 전달인자는 4 ) 여기서 전달인자들이 여러 개 사용되면 그 집합을 전달인자 목록(argument list), 여기서는 배열로서 설명합니다.(내용이 부정확하다면 지적해주시면 고맙겠습니다.)

        표준 입력은 아니지만, 영상에선 표준적인 입력 방식이라고 말한 이유는 swing이나 scanner가 있기 전에 자바에서 입력 값을 받던 방식이라서 그렇게 부르는 건가요? 직접 변수에 값을 매기는 방법과 비교했을 때, 인자를 사용하는 방식은 비슷한 거 같기도 하고.. 사용자가 입력하려는 값을 인자라고 따로 부르면서 사용하는 이유가 궁금해요.
      버전 관리
      egoing
      현재 버전
      선택 버전
      graphittie 자세히 보기