자바 - 명령줄 인수

안녕하세요, 미래의 자바 프로그래머 여러분! 오늘 우리는 자바의 명령줄 인수 세계에 흥미로운 여정을 떠납니다. 여러분의 친절한 이웃 컴퓨터 과학 교사로서, 이 주제를 단계별로 안내해 드리겠습니다. 그러니 마음에 드는 음료를 마시며 편안하게 자리를 잡고, 함께 뛰어보겠습니다!

Java - Command-Line Arguments

명령줄 인수는 무엇인가요?

imaginette 여러분이 요리사라면 어떨까요? (조금 이상하게 들릴 수 있지만, 곧 코딩으로 넘어가겠습니다!) 여러분은 레시피가 있지만, 때로는 재료를 약간 바꾸고 싶을 수 있습니다. 레시피 전체를 다시 쓰지 않고도 요리를 시작할 때 레시피에 변경 사항을 알릴 수 있었으면 얼마나 좋을까요? 명령줄 인수는 우리의 자바 프로그램에 대해 이와 같은 작업을 수행합니다!

명령줄 인수는 우리의 자바 프로그램을 명령줄에서 실행할 때 전달할 수 있는 값을 의미합니다. 이를 통해 프로그램에 입력을 제공할 수 있지만 소스 코드를 수정할 필요는 없습니다.

명령줄 인수를 전달하고 접근하는 방법

자바에서 명령줄 인수는 main 메서드에 문자열 배열로 전달됩니다. 간단한 예제를 보겠습니다:

public class Greeter {
public static void main(String[] args) {
if (args.length > 0) {
System.out.println("Hello, " + args[0] + "!");
} else {
System.out.println("Hello, World!");
}
}
}

이 예제에서 args는 명령줄 인수를 포함한 배열입니다. 프로그램을 실행할 때 인수를 제공하면 해당 이름을 인사합니다. 그렇지 않으면 "Hello, World!"를 기본으로 출력합니다.

이 프로그램을 명령줄 인수와 함께 실행하려면 다음과 같이 합니다:

java Greeter Alice

이는 다음과 같은 출력을 생성합니다: Hello, Alice!

명령줄 인수의 이점

  1. 유연성: 코드를 수정하지 않고도 프로그램의 행동을 변경할 수 있습니다.
  2. 자동화: 스크립트와 배치 처리에 유용합니다.
  3. 테스트: 다양한 입력을 테스트하기 쉽습니다.
  4. 구성: 프로그램 옵션을 설정하는 데 사용할 수 있습니다.

단일 명령줄 인수 예제

더 실질적인 예제를 만들어 보겠습니다. 가령 원의 면적을 계산하고, 반지름을 명령줄 인수로 제공하겠습니다.

public class CircleArea {
public static void main(String[] args) {
if (args.length != 1) {
System.out.println("Please provide exactly one argument: the radius of the circle.");
return;
}

try {
double radius = Double.parseDouble(args[0]);
double area = Math.PI * radius * radius;
System.out.printf("The area of a circle with radius %.2f is %.2f\n", radius, area);
} catch (NumberFormatException e) {
System.out.println("The argument must be a valid number.");
}
}
}

이 프로그램을 실행하려면 다음과 같이 합니다:

java CircleArea 5

이는 다음과 같은 출력을 생성합니다: The area of a circle with radius 5.00 is 78.54

여기서 무엇이 일어나고 있는지 분석해 보겠습니다:

  1. 정확히 하나의 인수가 제공되었는지 확인합니다.
  2. Double.parseDouble()을 사용하여 문자열 인수를 더블로 변환합니다.
  3. πr² 공식을 사용하여 면적을 계산합니다.
  4. printf를 사용하여 출력을 예쁘게 포맷합니다.
  5. 입력이 유효하지 않은 숫자일 경우 NumberFormatException를 catch합니다.

다중 명령줄 인수 예제

이제 한 단계 더 나아가 다중 명령줄 인수를 사용해 보겠습니다. 두 숫자를 더하거나 뺄셈하거나 곱하거나 나누는 간단한 계산기를 만들겠습니다.

public class Calculator {
public static void main(String[] args) {
if (args.length != 3) {
System.out.println("Usage: java Calculator <number1> <operation> <number2>");
System.out.println("Operations: add, subtract, multiply, divide");
return;
}

try {
double num1 = Double.parseDouble(args[0]);
double num2 = Double.parseDouble(args[2]);
String operation = args[1].toLowerCase();

double result;
switch (operation) {
case "add":
result = num1 + num2;
break;
case "subtract":
result = num1 - num2;
break;
case "multiply":
result = num1 * num2;
break;
case "divide":
if (num2 == 0) {
System.out.println("Error: Division by zero!");
return;
}
result = num1 / num2;
break;
default:
System.out.println("Unknown operation: " + operation);
return;
}

System.out.printf("%.2f %s %.2f = %.2f\n", num1, operation, num2, result);
} catch (NumberFormatException e) {
System.out.println("Error: Invalid number format.");
}
}
}

이 계산기를 사용하려면 다음과 같이 합니다:

java Calculator 10 add 5

이는 다음과 같은 출력을 생성합니다: 10.00 add 5.00 = 15.00

이 더 복잡한 예제에서 무엇이 일어나고 있는지 분석해 보겠습니다:

  1. 정확히 세 개의 인수가 제공되었는지 확인합니다: 두 개의 숫자와 한 개의 연산.
  2. 첫 번째와 세 번째 인수를 더블로 변환합니다.
  3. 두 번째 인수에 따라 적절한 연산을 수행합니다.
  4. 잠재적인 오류를 처리합니다. 예를 들어, 나눗셈에서 0으로 나누는 경우.
  5. 마지막으로 결과를 예쁘게 포맷한 문자열로 출력합니다.

결론

명령줄 인수는 자바 프로그래머의 도구 상자에서 강력한 도구입니다. 이를 통해 유연하고 재사용 가능한 프로그램을 만들 수 있으며, 소스 코드를 수정하지 않고 다양한 입력을 처리할 수 있습니다. 자바 여정을 계속하면서 명령줄 인수의 더 많은 용도를 발견할 것입니다. 특히 복잡한 애플리케이션과 스크립트에서 유용하게 사용됩니다.

기억하시기 바랍니다, 프로그래밍을 마스터하는 열쇠는 연습입니다. 이 예제를 수정해 보거나 자신만의 프로그램을 만들어 보세요. 예를 들어, 명령줄 입력을 기반으로 맞춤형 인사 카드를 생성하는 프로그램이나 단위 변환 도구를 만들어 보세요. 가능성은 무한합니다!

행복한 코딩을 기원하며, 여러분의 명령줄 인수가 항상 유효하길 바랍니다!

Credits: Image by storyset