오늘은 main 메소드에 입력값을 줘서 의도한 바를 실행해보는 내용을 설명해보겠습니다.
처음 java를 배우고 코드를 쓰다보면,
public class Example1 {
public static void main(String[] args) {
코드 작성 부분
}
}
항상 이런식으로 뭔가 틀 안에서만 코드를 작성하게 됩니다.
하지만 자세히 보면, 그동안 자바스크립트에서 배웠듯이,
저 main 이란 것은 뭔가 함수같이 생겼고 소괄호() 안에
문자열 타입의 배열 변수를 인자값으로 받을수 있을것 같이 생겼습니다.
그것은 사실이고, main 메소드 내부에 인자값이 입력되면 실행될 내용을 적어주고,
외부에서 인자값을 입력하면 내용이 출력되게 할 수 있습니다.
이것은 그동안 배웠던 것에서 범위만 확장되는 것이고 매우 간단합니다.
예를 들어,
인자값1과 인자값2 두가지를 숫자로 입력해서 전달했을때,
두 인자를 더한 값이 출력되도록 해보겠습니다.
아래에 코드가 있습니다.
(클래스는 안갖고 오고, 메인 메소드부터만 복사해왔습니다.)
public static void main(String[] args) {
if (args.length != 2) {
System.out.println("입력값이 부족합니다.");
System.exit(0);
}
String strNum1 = args[0];
String strNum2 = args[1];
int num1 = Integer.parseInt(strNum1);
int num2 = Integer.parseInt(strNum2);
int result = num1 + num2;
System.out.println(num1 + "+" + num2 + "=" + result);
}
보시면, args 즉 인자값의 길이가 2개가 아니면 "입력값이 부족합니다." 라고 출력됩니다.
( System.exit()메소드는 그냥 실행 종료시키는 거라 신경 안쓰셔도 됩니다. )
그리고 main 메소드는 String[] args 즉, 문자열 배열을 인자값으로 받기 때문에,
그대로 인자값끼리 더하면 문자열 형태로 붙게되니까,
ParseInt() 메소드를 이용해서 인자값을 타입변환 해줍니다.
그 다음에 System.out.println() 메소드를 이용해서 외부로 출력합니다.
이제 이것을 인텔리제이나 이클립스에서 실행하면,
"입력값이 부족합니다." 가 출력됩니다.
입력값을 안줬으니 당연합니다.
그럼 입력값을 어떻게 줘야하는지 설명하겠습니다.
첫번째는 JDK 내부에서 주는 방법입니다.
각 프로그램들은 Run 버튼 주변에 Run Configuration 이라는 게 있는데,
그걸 눌러서 들어가면, Program Arguments 라는 게 있습니다.
여기에 위에 작성한 대로 2개의 인자값을,
예를 들어 10 20 이렇게 주고 Apply를 하고 실행하게 되면,
" 10 + 20 = 30 " 이라고 출력됩니다.
두번째는 명령 프롬프트에서 직접 입력하는 방법입니다.
명령프롬프트에 들어가서, cd 를 이용해서 현재 작성한 코드가 소속된
디렉토리까지 들어와야 됩니다. 예를 들어,
cd C:\Users\kdhsm\IdeaProjects\java20240219_1\out\production\java20240219_1
이런식으로 해서 클래스파일의 위치를 잡아주고,
java 클래스명 인자값1 인자값2
를 입력하게 되면 아까와 마찬가지로,
"인자값1 + 인자값2 = 더한값" 이 출력됩니다.
오늘은 이렇게 메인 메소드를 외부에서 접근해봄으로써,
개념의 범위를 확장해봤습니다.
ps. 혹시라도 글을 읽으신 분들 중에 이해가 안되면
어디가 이해가 안된다 말씀해주시면 제가 이해가 되게끔 다시 글을 수정해보겠습니다.
저도 초보이다보니, 글이 난해하게 느껴질거라 짐작되고,
계속 이런 과정을 겪으면서 나아질 거라 생각합니다.
'개발자 과정 기록 및 일기' 카테고리의 다른 글
오늘의 기록입니다. (1) | 2024.02.25 |
---|---|
중앙정보기술인재개발원 개발자 과정 19일차 기록입니다. (0) | 2024.02.23 |
중앙정보기술인재개발원 개발자 과정 18일차 기록입니다. (0) | 2024.02.23 |
중앙정보기술인재개발원 개발자 과정 16일차 기록입니다. (0) | 2024.02.20 |
중앙정보기술인재개발원 개발자 과정 15일차 기록입니다. (0) | 2024.02.20 |